om-sync is little more than a basic proof of concept. Pull requests that enhance and/or extend the behavior are welcome.
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] <javascript:;>. > To post to this group, send email to > [email protected]<javascript:;> > . > 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.
