ClojureScript:如何访问Om光标中的对象

时间:2015-10-02 04:20:54

标签: clojurescript om figwheel

我只是在试验Om,从基础教程中学习。

我的程序数据在一个原子中:app-state。

如果我将序列放入该原子,例如。

(defonce app-state (atom {:things [1 2 3 4]}))

然后,在我的渲染中,我可以得到一个光标

(let [things (:things data)] ... )

并映射它:

(map #(* % %) things)

但是,如果我有一个可以返回序列的方法的defrecord:

(defrecord ThingCollection [xs]
    IThingCollection
    (getSeq [this] ... ) )

并将THAT置于应用程序状态

(defonce app-state (atom {:things (->ThingCollection [1 2 3 4]})))

...

(let [things (:things data)] ... )

我不能这样做:

(map #(* % %) (.getSeq things))

它只是抛出一个错误,表示游标没有方法.getSeq

这是有道理的。但是,我怎样才能真正得到光标内的ThingCollection对象?我找不到任何这方面的例子。我尝试过的任何东西似乎都没有给我。

1 个答案:

答案 0 :(得分:0)

尝试(getSeq things)

很少注意到:

  1. 喜欢烤肉串get-seq而不是getSeq
  2. ->ThingCollection没有给出一个对象,它只是给出一个记录。这仍然是不可变的,大致只是一个名为map"。
  3. 一旦你意识到第2点,使用.method调用看起来应该是错误的,因为这是为了处理JavaScript对象。