提问者:小点点

Ember. js itemController控制器泄漏变量


我有一个itemController,它有两个字段:isExpandednewCommentisExpanded运行良好,绑定到每个itemController,但newComment以某种方式被itemController的所有实例共享。并且它只会第一次共享。在我提交新注释后,该文本区域不再与其他文本区域共享相同的绑定,但其余文本区域仍然神秘地绑定到同一个幽灵newComment。为什么?

http://emberjs.jsbin.com/gojuhega/1/edit

[1]上一个问题已删除并与此jsbin隔离。


共1个答案

匿名用户

当基于讨论控制器原型创建新控制器时,它的属性似乎是浅拷贝的。由于您的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: ''
      });
    }
  }
});

相关问题