我有下面的代码,我认为我做了一些根本错误的事情。
(defn world-view [data owner opts]
(reify
om/IInitState
(init-state [_]
(om/update! data #(assoc % :world vec)))
om/IWillMount
(will-mount [_]
(go (let [world (<! (get-world (:dimensions opts)))]
(log (get-in world [9 9]))
(om/update! data #(assoc % :world world)))))
om/IRender
(render [this]
(log (get :world data))
(apply dom/table nil
(om/build-all row (:world data))))))我正在om/IWillMount中进行远程ajax调用,如下所示:
om/IWillMount
(will-mount [_]
(go (let [world (<! (get-world (:dimensions opts)))]
(log (get-in world [9 9]))
(om/update! data #(assoc % :world world)))))我期待从远程调用返回一个2d向量,这是因为我可以用
(log (get-in world [9 9]))然后,我将使用om/update更新数据结构。
但是当render被调用时,数据似乎没有被更新,我可以尝试记录数据结构来测试这一点。
log (get :world data))这没有任何记录。
我看不出我做错了什么,也不知道为什么数据结构没有更新。
发布于 2014-06-05 14:34:59
om/update!将游标设置为给定的值,因此基本上是将一个函数分配给游标。我相信你应该用om/transact!代替。
https://stackoverflow.com/questions/24040522
复制相似问题