Am Samstag, 26. April 2014 16:19:34 UTC+2 schrieb David Nolen: > om-sync is little more than a basic proof of concept. Pull requests that > enhance and/or extend the behavior are welcome.
Yea, I read that. However, the error is not within om-sync I guess. I did your intermediate tutorial and there I was able to send the whole map to the server. So I guess something is wrong on my side. Or maybe I miss something from the tutorial that I additionally need. Best Regards, Sven > > On Saturday, April 26, 2014, Sven Richter <[email protected]> wrote: > > Hi, > > > > I am trying to use om-sync to update my server when something in my app state > changes. But, whenever I do that I only send one key of my whole map to the > server, which is useless as some metainformation such as an unique id is > missing. > > > > > I put together a small working example which shows exactly this problem. You > can copy this into a file and after clicking a button you will see that the > put request sends only a map with one key: > > > > (ns om-async.core > > (:require-macros [cljs.core.async.macros :refer [go]]) > > (:require [cljs.core.async :as async :refer [put! chan alts!]] > > [goog.dom :as gdom] > > [om.core :as om :include-macros true] > > [om.dom :as dom :include-macros true] > > [om-sync.core :refer [om-sync]] > > [om-sync.util :refer [tx-tag edn-xhr]] > > [cljs-time.core :as cljs-time] > > [cljs-time.format :as cljs-format])) > > > > (def test-state (atom {:releases {:url "/releases" :coll [{:keyone > "testvalue" :keytwo "testval2"} {:keyone "testvalmap2" :keytwo > "tesval2map2"}]}})) > > > > > > (defn test-view-deeper [app owner] > > (reify > > om/IRenderState > > (render-state [_ _] > > (apply dom/div nil > > (map #(dom/button > > #js {:onClick (fn [e] (println "clicked button") > > (om/transact! % :keyone (fn [_] > "newtestval") :update))} > > (:keyone %)) app))))) > > > > (defn test-view [app owner] > > (reify > > om/IRenderState > > (render-state [_ _] > > (dom/div nil > > (om/build om-sync (:releases app) > > {:opts {:view test-view-deeper > > :filter (comp #{:create :update :delete} > tx-tag) > > :id-key :class/id > > :on-success (fn [res tx-data] (println > "success " res)) > > :on-error > > (fn [err tx-data] > > (println "error "))}}))))) > > > > > > (let [tx-chan (chan) > > tx-pub-chan (async/pub tx-chan (fn [_] :txs))] > > (om/root test-view test-state > > {:target (gdom/getElement "test") > > :shared {:tx-chan tx-pub-chan} > > :tx-listen (fn [tx-data root-cursor] > > (put! tx-chan [tx-data root-cursor]))})) > > > > The put request in chrome looks like this: > > Request payload: {:keyone "newtestval"} > > > > Any Ideas what is wrong here? And how to do it right? > > > > Best Regards, > > Sven > > > > -- > > Note that posts from new members are moderated - please be patient with your > first post. > > --- > > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > > > To post to this group, send email to [email protected]. > > Visit this group at http://groups.google.com/group/clojurescript. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
