Ember.js 如何使用变量进行双向绑定?

Ember.js 如何使用变量进行双向绑定?,ember.js,Ember.js,当用户从对象创建视图时,似乎当我更改对象中的属性时,视图的属性也会更改。如果在视图中更改属性,则更改不会反映在对象中。我认为双向绑定是默认行为。我错过什么了吗 WidgetClass = Ember.Object.extend address: 'widget address' create_view: -> # console.log this.name view = Ember.View.create someobj: this addr

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

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'

当应用绑定并立即测试它们时,需要强制Ember运行循环跟上。尝试在查看之前添加
Ember.run.sync()
。设置“地址”、“新地址”。不再需要您的
setTimeout()
调用。

在这种情况下,使用setPath很重要。双向绑定非常有效

下面的代码可以工作

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

谢谢我尝试添加了Ember.run.sync(),绑定工作正常。很高兴能提供帮助。如果你都准备好了,请把问题标记为已回答。