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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top