Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套控制器+;行动?_Javascript_Ember.js - Fatal编程技术网

Javascript 嵌套控制器+;行动?

Javascript 嵌套控制器+;行动?,javascript,ember.js,Javascript,Ember.js,我在emberjs中使用嵌套的ArrayController。基本上,我有一个父ArrayController,其内容由子ArrayController组成。每个子ArrayController的内容都是简单对象的列表。使用Chrome的timeline工具和profiling工具监控我的应用程序的内存使用情况删除子ArrayController时似乎存在内存泄漏。我正在使用最新的emberjs大师 简化的代码和演示可以在这里找到。单击“添加”添加20个子ArrayController,每个子A

我在emberjs中使用嵌套的ArrayController。基本上,我有一个父ArrayController,其内容由子ArrayController组成。每个子ArrayController的内容都是简单对象的列表。使用Chrome的timeline工具和profiling工具监控我的应用程序的内存使用情况删除子ArrayController时似乎存在内存泄漏。我正在使用最新的emberjs大师

简化的代码和演示可以在这里找到。单击“添加”添加20个子ArrayController,每个子ArrayController有40个简单的emberjs对象作为子对象。单击“全部删除”将删除所有子ArrayController。随着“添加”和“全部删除”的每个周期,总体内存使用量都会增加。如果我不使用任何
{{action}
的话,总的内存使用量保持不变

我做错什么了吗?这种内存使用量的增加能以某种方式避免吗

演示使用了一个简单的模板,由两个嵌套的
{{{#each}

<script type="text/x-handlebars">
  <input type="button" value="Add" onClick="Demo.containerController.addController();"/>
  <input type="button" value="Remove all" onClick="Demo.containerController.removeAll();"/>

  {{#each Demo.containerController.content tagName="ul"}}
    <li>{{#each content}}<a {{action "test"}}></a> {{prop}}{{/each}}</li>
  {{/each}}
</script>

{{#每个Demo.containerController.content标记名=“ul”}
  • {{{#每个内容}{{prop}{{{/each}}
  • {{/每个}}
    代码是

      Demo = Ember.Application.create();
    
      Demo.Model = Ember.Object.extend({
        prop : ''
      });
    
      Demo.Controller = Ember.ArrayController.extend({
        content: []
      });
    
      Demo.containerController = Ember.ArrayController.create({
        content : [],
    
        addController : function() {
          for (var i = 0; i < 20; i++) {
            var cnt = [];
    
            for (var j = 0; j < 40; j++) {
                cnt.pushObject(Demo.Model.create({prop: 'test' + j}));                
            }            
    
            this.pushObject(
            Demo.Controller.create({
                content: cnt
            }));
          }
        },
    
        removeAll : function() {          
          this.clear();
        }
      }); 
    
    Demo=Ember.Application.create();
    Demo.Model=Ember.Object.extend({
    道具:“”
    });
    Demo.Controller=Ember.ArrayController.extend({
    内容:[]
    });
    Demo.containerController=Ember.ArrayController.create({
    内容:[],
    addController:function(){
    对于(变量i=0;i<20;i++){
    var cnt=[];
    对于(var j=0;j<40;j++){
    pushObject(Demo.Model.create({prop:'test'+j}));
    }            
    这是pushObject(
    Demo.Controller.create({
    内容:碳纳米管
    }));
    }
    },
    removeAll:函数(){
    这个.clear();
    }
    }); 
    
    您在当前主机中尝试过这个吗?这个?问题是一样的…看起来像是我从“下载”中知道的大师。您可以尝试订阅
    willRemoveElement
    willDestroy
    ,看看它们是否都发生了。您可以看看是否可以在这些方法中进行额外的清理。啊,好的;-)使用这个最新的主机修复了内存问题。至少在演示代码中是这样。谢谢。你知道下一个余烬版本什么时候发布吗?