Javascript 嵌套控制器+;行动?
我在emberjs中使用嵌套的ArrayController。基本上,我有一个父ArrayController,其内容由子ArrayController组成。每个子ArrayController的内容都是简单对象的列表。使用Chrome的timeline工具和profiling工具监控我的应用程序的内存使用情况删除子ArrayController时似乎存在内存泄漏。我正在使用最新的emberjs大师 简化的代码和演示可以在这里找到。单击“添加”添加20个子ArrayController,每个子ArrayController有40个简单的emberjs对象作为子对象。单击“全部删除”将删除所有子ArrayController。随着“添加”和“全部删除”的每个周期,总体内存使用量都会增加。如果我不使用任何Javascript 嵌套控制器+;行动?,javascript,ember.js,Javascript,Ember.js,我在emberjs中使用嵌套的ArrayController。基本上,我有一个父ArrayController,其内容由子ArrayController组成。每个子ArrayController的内容都是简单对象的列表。使用Chrome的timeline工具和profiling工具监控我的应用程序的内存使用情况删除子ArrayController时似乎存在内存泄漏。我正在使用最新的emberjs大师 简化的代码和演示可以在这里找到。单击“添加”添加20个子ArrayController,每个子A
{{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
,看看它们是否都发生了。您可以看看是否可以在这些方法中进行额外的清理。啊,好的;-)使用这个最新的主机修复了内存问题。至少在演示代码中是这样。谢谢。你知道下一个余烬版本什么时候发布吗?