Domanda

Ho il seguente codice e penso che sto facendo qualcosa di fondamentalmente sbagliato.

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

Sto facendo una chiamata Ajax remota in om/IWillMount come questo:

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

Mi aspetto un vettore 2D indietro dalla chiamata remota e questo funziona perché posso registrare elementi dell'array con

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

Lo sto usando om/update per aggiornare la struttura dei dati.

Ma quando viene chiamato il rendering, i dati non sembrano essere aggiornati, posso testare questo tentativo di registrare la struttura dei dati

log (get :world data))
.

Non registra nulla.

Non riesco a vedere cosa sto facendo male o perché la struttura dei dati non è stata aggiornata.

È stato utile?

Soluzione

om/update! Imposta il cursore sul valore dato, quindi sei fondamentalmenteAssegnazione di una funzione al cursore.Credo che dovresti usare om/transact! invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top