[英]Ember.js itemController controller leaking variable
我有一个具有两个字段的itemController: isExpanded
和newComment
。 isExpanded
可以很好地工作并绑定到每个itemController,但是newComment却以某种方式由itemController的所有实例共享。 而且只会第一次分享。 在我提交新评论之后,该textarea不再与其他textareas共享相同的绑定,但是其余textareas仍神秘地绑定到相同的ghost newComment
。 为什么?
http://emberjs.jsbin.com/gojuhega/1/edit
[1]先前的问题已删除并隔离到此jsbin。
似乎当基于DiscussionController
原型创建新的控制器时,其属性会被浅复制。 由于newComment
是引用类型,因此最终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: ''
});
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.