繁体   English   中英

Ember.js itemController控制器泄漏变量

[英]Ember.js itemController controller leaking variable

我有一个具有两个字段的itemController: isExpandednewComment 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM