主干 - 实例化视图包含旧数据
Backbone - Instantiated view has old data
>我有以下视图类:
define(function(require) {
var Backbone = require('backbone');
var TestView = Backbone.View.extend({
el: $("#test"),
test: new Array(),
initialize: function(){
this.test.push("test");
console.log(this.test);
}
});
return TestView
});
当我实例化视图时,如下所示:
var v = new TestView();
测试数组每次递增 1,而不是在每个实例上为空。我已经采取措施删除僵尸视图(按照此 URL 中的步骤操作:http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/),但数组仍然在每个新实例化上保留旧数据。
显然,我可以删除初始化函数中的数据,但我很好奇为什么这些数据被保留在本质上是一个全新的视图对象中?似乎有一些垃圾收集问题?
你的new Array()
调用只在你创建 TestView 原型时进行,你需要在实际制作对象时创建它,否则它会在 TestView 的所有实例之间共享,
initialize: function(){
this.test = new Array();
this.test.push("test");
console.log(this.test);
}
如果我这样做,你的el: $("#test")
电话也会发生同样的事情,
var v = new TestView();
$("#test").detach();
var v2 = new TestView();
v.el == v2.el // true
所以要完成你想要的,
define(function(require) {
var Backbone = require('backbone');
var TestView = Backbone.View.extend({
initialize: function(){
this.test = new Array();
this.test.push("test");
console.log(this.test);
}
});
return TestView
});
var v = new TestView({ el : '#test'});
相关文章:
- php函数的XMLHttpRequest响应不包含任何数据
- javascript API调用导致旧数据
- 在“加载更多”按钮函数中包含 JSON 数据
- 测试两个变量是否包含一些数据 JavaScript
- 从chrome扩展创建一个包含POST数据的链接
- 如何删除包含包含某些数据的单元格的表行
- 为什么我的Highchart javascript总是从DB中获取旧数据
- 筛选包含大数据的html表(超过12K行)
- WebGL错误-错误:WebGL:bindBuffer:buffer已包含元素数据
- Highchart阶梯线图表工具提示在没有数据时显示旧数据
- 当我点击或聚焦输入时,我想清除或阻止输入点击旧数据
- AngularFire $createUser 的承诺不返回包含用户数据的对象
- Javascript对象保留包含旧数据
- 绘制图表.js包含 ajax 数据和响应式.一些问题和疑问
- 打开包含帖子数据的弹出窗口
- 主干 - 实例化视图包含旧数据
- 如何在购物车中拖动新数据后从购物车中删除旧数据
- 角度:在包含外部数据的ng重复上搜索过滤器
- Jquery 对话框内容有时会返回旧数据
- AngularJS - 刷新包含新数据的列表