首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >om ClojureScript参考-当试图使用om/transact更新向量时游标错误

om ClojureScript参考-当试图使用om/transact更新向量时游标错误
EN

Stack Overflow用户
提问于 2014-12-07 15:35:31
回答 2查看 547关注 0票数 1

在试图更新游标时,我看到了以下错误:

代码语言:javascript
复制
Uncaught Error: No protocol method ITransact.-transact! defined for type function: function comments(){return om.core.ref_cursor.call(null,new cljs.core.Keyword(null,"comments-data","comments-data",1871210833).cljs$core$IFn$_invoke$arity$1(om.core.root_cursor.call(null,cljs_playground.core.app_state)));

我使用ref-游标指向应用程序状态中的注释-数据向量:

代码语言:javascript
复制
(def app-state
  (atom
    {:comments-data [{ :author "Commenter 1" :text "comment 1" }
                     { :author "Commenter 2" :text "comment 2" }]}))

(defn comments []
  (om/ref-cursor (:comments-data (om/root-cursor app-state))))

现在,当用户通过我的输入组件中的输入提交一些数据时,我想更新这个游标。我使用(让foo (->>注释))引用在呈现状态中的游标。我将它传递到一个函数调用中,该函数调用处理用户提交,我只想简单地向这个向量再添加一个项。

代码语言:javascript
复制
(defn handle-submit [e owner {:keys [text]} foo]
  (om/transact! foo #(concat % {:author "foo" :text "bar"}))
  (om/set-state! owner :text ""))

(defn Input
  [data owner]
  (reify
    om/IInitState
    (init-state [_]
      {:text nil})
    om/IRenderState
    (render-state [this state]
     (let [foo (->> comments)]
       (dom/div nil
         (dom/input #js
           { :type "text"
             :ref "text-field"
             :value (:text state)
             :onChange (fn [event] (handle-change event owner state))})
         (dom/button #js 
           { :onClick (fn [event] (handle-submit event owner state foo))} "submit"))))))

但是,当我做这个交易的时候!我看到上面的错误了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-07 15:58:07

您希望调用您的comments函数并使用它的返回值(游标),而不是使用函数本身。更改这一行:

代码语言:javascript
复制
 (let [foo (->> comments)]

至:

代码语言:javascript
复制
 (let [foo (->> (comments))]

这对你来说应该管用。

票数 1
EN

Stack Overflow用户

发布于 2015-04-19 03:59:41

变化

代码语言:javascript
复制
(let [foo (->> comments)]

代码语言:javascript
复制
(let [foo (comments)]

让它更简单。不需要->>操作符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27344275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档