Backbone js显示旧的模型
Backbone js displays old models
我是新的骨干,现在有骨干js和骨干验证的问题。下面是我的代码:
var EmployeeCreateView = Backbone.View.extend({
el: "#page_content",
initialize: function() {
console.log("initializing....");
this.model = new EmployeeModel();
console.log(this.model);
this.render();
},
render: function() {
Backbone.Validation.bind(this);
this.$el.html(EmployeeCreateTemplate);
},
events: {
"click #submit-employee": "submitEmployee"
},
submitEmployee: function(e) {
e.preventDefault();
var data = Backbone.Syphon.serialize(this);
this.model.set(data, { validate: true });
console.log(this.model);
if (!this.model.isValid()) {
_.each(this.model.validationError, function (error) {
});
} else {
this.model.save(null, {
success: function() {
new EmployeeCollectionView();
},
error: function(model, response) {
this.$el.html(ErrorTemplate)({
error: response.responseText
});
}
});
}
}
});
发生的事情是,当我进入这个页面时,console.log()都显示一个模型,这很好。但是,当我离开页面并再次返回时,初始化中的console.log()显示了一个模型,这就是我想要的。但是,submitEmployee()函数上的console.log显示了两个模型。下面是控制台输出:
// first page load, shows a single object
initializing....
n {cid: "c2", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
// other page load
[n, n, n, n, n]
// back to original page, shows a new object
initializing....
n {cid: "c10", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
// submit still sees both objects, which i don't want
n {cid: "c2", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
n {cid: "c10", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
谁能告诉我我做错了什么?谢谢!
您有僵尸对象-应该被清理的对象,但由于引用而徘徊,并在稍后突然出现来咬您。
部分问题在于你管理视图的方式。让视图本身渲染是一个坏主意。让视图创建一个呈现自己的子视图来取代当前视图是一个更糟糕的想法。您看到的问题是这种代码结构的直接结果。
我推荐两篇文章作为开始:
在Backbone.js中管理页面过渡
和
在JavaScript中明确工作流
相关文章:
- 显示模块模式在Knockout中设置模型的新实例
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- Three.JS OBJ模型未显示
- 代码点火器型号中未显示报警框.模型警报中的
- 显示/隐藏有关模型更改的指令内容
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 如果所有模型值都不为空,则显示角度
- Collada模型在Three.js中显示为黑色
- 加载 .dae 模型时不显示纹理
- 我的html5应用程序无法显示模型
- 使用模型创建实例显示'不是函数'(节点使用猫鼬)
- Collada模型面在three.js中未正确显示
- 如何在客户端的元窗口小部件(JavaScript)中获取和显示更新的域模型
- 模型更新时触发ng显示
- 如何使用ng模型显示输入元素的不同值
- ExtJS4网格存储/模型显示空行
- ng模型显示重复值
- SQL帮助~关系数据库模型~显示结果
- Three.js Collada模型显示黑色,没有灯光,直到鼠标移动
- 在事件中调用渲染时,模型显示为未定义