如何创建表示引用对象中的属性的Bacon.Property?

时间:2015-09-19 15:49:52

标签: frp bacon.js

我已经开始玩Bacon.js了,我遇到了一个我找不到任何例子的问题。

我有一组节点,可以引用其他节点。

在命令性代码中看起来像这样:

files

现在,我希望alice = { name: "Alice" } bob = { name: "Bob" } carol = { name: "Carol" } alice.likes = bob bob.likes = carol alice.likes.name //=> "Bob" bob.name = "Bobby" alice.likes.name //=> "Bobby" alice.likes = carol alice.likes.name //=> "Carol" 拥有一个必须更改的属性 只要alice.likes.name指向不同的对象,或者alice.likes属性 name中的当前对象发生了变化。

我已经提出了下面的代码(LiveScript语法),它正确记录了3条消息:Bob,Bobby,Carol。

我正在使用alice.likes进行测试。

Bus

问题:如何制作代表mkBus = (initialValue) -> bus = new Bacon.Bus() property = bus.toProperty(initialValue) property.push = (newValue) -> bus.push(newValue) property alice = { pName: mkBus("Alice"), pLikes: mkBus(null) } bob = { pName: mkBus("Bob"), pLikes: mkBus(null) } carol = { pName: mkBus("Carol"), pLikes: mkBus(null) } alice.pLikes.onValue (person) -> if person person.pName.onValue (vName) -> console.log vName alice.pLikes.push(bob) bob.pLikes.push(carol) # Change name bob.pName.push("Bobby") # Change reference alice.pLikes.push(carol) 名称的媒体资源?

即:

alice.likes.name

我是FRP的新手,所以如果我做错了,请告诉我。

0 个答案:

没有答案