प्रस्तुत करने के बाहर कर्सर में हेरफेर नहीं कर सकता पहली बार प्रतिक्रिया की कोशिश कर रहा है, और मैं एक साधारण todo सूची ऐप बनाना चाहता हूं। लेकिन हर बार जब मैं onSubmit
ट्रिगर करने के लिए एंटर दबाता हूं तो यह Uncaught Error: Cannot manipulate cursor outside of render phase, only om.core/transact!, om.core/update!, and cljs.core/deref operations allowed
कहता है। जबकि मुझे लगता है कि यह एक बहुत अच्छा त्रुटि संदेश है, मुझे नहीं पता कि क्या करना है।चरण
(ns app.core
(:require [om.core :as om :include-macros true]
[sablono.core :as html :refer-macros [html]]))
(def app-state (atom
{:todos [{:todo "first"}
{:todo "second"}]
:current ""}))
(defn to-do
[data]
(om/component
(html [:li (:todo data)])))
(defn to-dos
[data]
(om/component
(html [:div
[:form {:on-submit (fn [e]
(.preventDefault e)
(om/transact! data :todos (fn [v]
(js/console.log (:current data))
(conj v (:current data)))))}
[:input {:type "text"
:placeholder "Enter some text."
:on-change (fn [e] (om/update! data :current (.. e -target -value)))}]]
[:ul
(om/build-all to-do (:todos data))]])))
(om/root to-dos app-state {:target js/document.body})
यह बिल्कुल सही – Dan
का उपयोग करना है '(: वर्तमान v)' 'बहुत @ डेटा' कर्सर पुन: पहुंच बनाने के लिए बेहतर है। यद्यपि 'ओम/ट्रांसकैट' के लिए ': todos' तर्क के साथ, यहां दूसरी समस्या है! नीचे मेरा जवाब देखें। – prabhasp