我已经开始玩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的新手,所以如果我做错了,请告诉我。