Data binding 在具有依赖关系的视图上绑定
我正在使用视图将数据绑定到contentEditableData 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扩展
div
,使用此问题答案中的代码:
我有一个属性a.b.c
,我将其绑定为:
{{view App.ContenteditableView valueBinding="a.b.c"}}
当我输入a.b.c
时,它会正确更新,当我修改a.b.c
时,它会自动更新。但是,当我将a
更改为其他对象时,它不会更新。也就是说,文本框需要在a
或b
更改时更新,而不仅仅是在c
更改时更新
如何做到这一点?如果您正确使用内置设置器,Ember已经支持这一点 如果
a
扩展了Ember.Objecta.set('b',{c:'asdf'})
如果a
是一个POJOEmber.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
时,这个观察者就会触发,但可编辑的内容不会更新。我有什么问题?