OM - Datos que no se actualizan después de la llamada AJAX
-
21-12-2019 - |
Pregunta
Tengo el siguiente código y creo que estoy haciendo algo fundamentalmente mal.
(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))))))
Estoy haciendo una llamada AJAX remota en om/IWillMount
como esta:
om/IWillMount
(will-mount [_]
(go (let [world (<! (get-world (:dimensions opts)))]
(log (get-in world [9 9]))
(om/update! data #(assoc % :world world)))))
Estoy esperando un vector 2D de la llamada remota y esto funciona porque puedo registrar elementos de la matriz con
(log (get-in world [9 9]))
Luego estoy usando om/update
para actualizar la estructura de datos.
Pero cuando se llama Render, los datos no parecen actualizarse, puedo probarlo intentando registrar la estructura de datos
log (get :world data))
Esto no registra nada.
No puedo ver lo que estoy haciendo mal o por qué no se ha actualizado la estructura de datos.
Solución
om/update!
establece el cursor al valor dado, por lo que es básicamenteAsignando una función a su cursor.Creo que debe usar om/transact!
en su lugar.