Pergunta

Eu tenho o código a seguir e acho que estou fazendo algo fundamentalmente errado.

(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))))))

Estou fazendo uma chamada remota ajax om/IWillMount assim:

om/IWillMount
  (will-mount [_]
    (go (let [world (<! (get-world (:dimensions opts)))]
          (log (get-in world [9 9]))
          (om/update! data #(assoc % :world world)))))

Estou esperando um vetor 2D de volta da chamada remota e isso funciona porque posso registrar elementos do array com

(log (get-in world [9 9]))

então estou usando om/update para atualizar a estrutura de dados.

Mas quando render é chamado, os dados não parecem estar atualizados, posso testar isso tentando registrar a estrutura de dados

log (get :world data))

Isso não registra nada.

Não consigo ver o que estou fazendo de errado ou por que a estrutura de dados não foi atualizada.

Foi útil?

Solução

om/update! define o cursor para o valor fornecido, então você basicamente atribui uma função ao seu cursor.Eu acredito que você deveria usar om/transact! em vez de.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top