Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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_Backbone.js - Fatal编程技术网

Javascript 从内存中删除旧型号

Javascript 从内存中删除旧型号,javascript,backbone.js,Javascript,Backbone.js,我创建了一个简单的示例 在“主干眼”Firefox插件或Chrome的“主干调试器”中,我看到每点击一次按钮,模型的数量就会不断增加。如何从旧对象中释放内存?您的empty函数无法清除所有内容。当然,您正在对this.views中的所有内容调用remove,但您从不清空views数组。请尝试以下版本: empty: function() { _.each(this.views, function(view) { console.log(view.cid)

我创建了一个简单的示例


在“主干眼”Firefox插件或Chrome的“主干调试器”中,我看到每点击一次按钮,模型的数量就会不断增加。如何从旧对象中释放内存?

您的
empty
函数无法清除所有内容。当然,您正在对
this.views
中的所有内容调用
remove
,但您从不清空
views
数组。请尝试以下版本:

empty: function() {
    _.each(this.views, function(view) {
        console.log(view.cid)
        view.remove();
    });

    this.$el.empty();
}
并在单击按钮几次时观察控制台:

您的
列表视图
在其
视图
数组中会出现越来越多的
列表项视图
引用数组,这些僵尸视图将引用集合,集合将引用模型。你需要堵住这个漏洞:

empty: function() {
    _.each(this.views, function(view) {
        view.remove();
    });
    this.$el.empty();
    this.views = [ ]; // <------
}
主干将自行处理这一问题;从:

构造函数/初始化
新视图([options])

有几个特殊选项,如果传递,将直接附加到视图:
模型
集合
el
id
类名
标记名
属性
事件


哦,我忘了清空这个。视图!谢谢你,穆,非常感谢(-:P.S.
this.collection=options.collection;
只是为了清楚起见,无论如何谢谢(-:
empty: function() {
    _.each(this.views, function(view) {
        view.remove();
    });
    this.$el.empty();
    this.views = [ ]; // <------
}
this.collection = options.collection;