你如何使用双向绑定使用变量?

时间:2012-03-02 19:20:52

标签: ember.js

当从对象创建视图时,似乎当我更改对象中的属性时,视图的属性也会发生变化。如果我在视图中更改属性,则更改不会反映在对象中。我认为双向绑定是默认行为。我错过了什么吗?

WidgetClass = Ember.Object.extend
  address: 'widget address'
  create_view: ->
    # console.log this.name
    view = Ember.View.create
      someobj: this
      addressBinding: 'someobj.address'
      template: Ember.Handlebars.compile '{{address}}'

    return view

TextWidget = WidgetClass.create()

view = TextWidget.create_view()

view.append()

view.set 'address', 'new new address'
console.log (view.get 'address')
console.log (TextWidget.get 'address') # I am expecting this output to be 'new new address'

http://jsfiddle.net/rkitamura/2zsUX/

2 个答案:

答案 0 :(得分:2)

当应用绑定然后立即测试它们时,您需要强制Ember运行循环赶上。尝试在Ember.run.sync()之前添加view.set 'address', 'new new address'。不再需要setTimeout()来电。

答案 1 :(得分:1)

在这种情况下使用setPath很重要。双向绑定完美​​无缺。

以下代码有效。

view.setPath 'someobj.address', 'new new address'
console.log (TextWidget.get 'address')  # this outputs 'new new address' correctly