我有一个itemController,它有两个字段:isExpanded
和newComment
。 isExpanded
工作得很好并绑定到每个itemController,但newComment以某种方式由itemController的所有实例共享。它只会第一次分享。在我提交新评论后,该textarea不再与其他textareas共享相同的绑定,但其余的textareas仍然神秘地绑定到同一个鬼newComment
。为什么呢?
http://emberjs.jsbin.com/gojuhega/1/edit
[1]之前的问题被移除并隔离到此jsbin。
答案 0 :(得分:0)
似乎在基于DiscussionController
原型创建新控制器时,其属性被浅层复制。由于您的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: ''
});
}
}
});