Data binding 在具有依赖关系的视图上绑定

Data binding 在具有依赖关系的视图上绑定,data-binding,view,ember.js,Data Binding,View,Ember.js,我正在使用视图将数据绑定到contentEditablediv,使用此问题答案中的代码: 我有一个属性a.b.c,我将其绑定为: {{view App.ContenteditableView valueBinding="a.b.c"}} 当我输入a.b.c时,它会正确更新,当我修改a.b.c时,它会自动更新。但是,当我将a更改为其他对象时,它不会更新。也就是说,文本框需要在a或b更改时更新,而不仅仅是在c更改时更新 如何做到这一点?如果您正确使用内置设置器,Ember已经支持这一点 如果a扩展

我正在使用视图将数据绑定到contentEditable
div
,使用此问题答案中的代码:

我有一个属性
a.b.c
,我将其绑定为:

{{view App.ContenteditableView valueBinding="a.b.c"}}
当我输入
a.b.c
时,它会正确更新,当我修改
a.b.c
时,它会自动更新。但是,当我将
a
更改为其他对象时,它不会更新。也就是说,文本框需要在
a
b
更改时更新,而不仅仅是在
c
更改时更新


如何做到这一点?

如果您正确使用内置设置器,Ember已经支持这一点

如果
a
扩展了Ember.Object
a.set('b',{c:'asdf'})
如果
a
是一个POJO
Ember.set(a,'b',{c:'asdf'})

此外,无需使用valueBinding,您只需编写
value=a.b.c

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return {
      a:{
        b:{
          c:'dog'
        }
      }
    };
  },
  actions:{
    change: function(){
      Em.set(this.currentModel, 'a', {b:{c:'fdasdf'}});
    }
  }
});
在提供的示例中,我将文本框设置为
a.b.c

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return {
      a:{
        b:{
          c:'dog'
        }
      }
    };
  },
  actions:{
    change: function(){
      Em.set(this.currentModel, 'a', {b:{c:'fdasdf'}});
    }
  }
});

示例:

Hi Kingpin,谢谢您的回复。然而,我看到一些奇怪的行为。我有这个代码的等价物:
{{view-Ember.ContenteditableView-value=a.b.c-editable=true}}{{a.b.c}
。当我按照你说的做时,
{{a.b.c}}
会更新,但contentEditable不会更新。另外,如果我添加一个类似
x:function(){console.log('x')}.observes('a.b.c')
,每当我按预期更新
a.b.c
时,这个观察者就会触发,但可编辑的内容不会更新。我有什么问题?