我有一个itemController,它有两个字段:isExpanded
和newComment
。isExpanded
运行良好,绑定到每个itemController,但newComment以某种方式被itemController的所有实例共享。并且它只会第一次共享。在我提交新注释后,该文本区域不再与其他文本区域共享相同的绑定,但其余文本区域仍然神秘地绑定到同一个幽灵newComment
。为什么?
http://emberjs.jsbin.com/gojuhega/1/edit
[1]上一个问题已删除并与此jsbin隔离。
当基于讨论控制器
原型创建新控制器时,它的属性似乎是浅拷贝的。由于您的newComment
是引用类型,因此最终会有3个控制器共享同一个实例。只有当您单击“创建”时,各个控制器才能获得自己的实例。
一种潜在的解决方案:
App.DiscussionController = Ember.Controller.extend({
isExpanded: false,
newComment: null,
actions: {
toggleExpand: function(){
this.toggleProperty('isExpanded');
if (!this.get("newComment")) {
this.set("newComment", {body:""});
}
},
createComment: function() {
this.set('newComment', {
body: ''
});
}
}
});