Javascript 通过向模型添加“更改”方法,我的视图不再绑定到它?
我仍在试图了解Backbone.js的工作原理。我有一个模型,每当其中一个属性发生更改时,我都希望运行计算Javascript 通过向模型添加“更改”方法,我的视图不再绑定到它?,javascript,backbone.js,Javascript,Backbone.js,我仍在试图了解Backbone.js的工作原理。我有一个模型,每当其中一个属性发生更改时,我都希望运行计算 window.Print = Backbone.Model.extend({ change: function () { this.set({ totalTime: this.calculateTime() }, {silent: true}); } 这很有效。无论何时修改属性,都会触发change方法并完成计算 问题是,有了变更方法,我的视图不再在变更上
window.Print = Backbone.Model.extend({
change: function () {
this.set({ totalTime: this.calculateTime() }, {silent: true});
}
这很有效。无论何时修改属性,都会触发change方法并完成计算
问题是,有了变更方法,我的视图不再在变更上重新呈现,我假设它不再绑定到变更方法?。如果我把它拿出来,我的视图就会像预期的那样工作
我的观点是这样的:
window.TimeView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
this.template = _.template($('#template').html());
},
render: function(){
var renderedContent = this.template(this.model.toJSON());
$(this.el).html(renderedContent);
return this;
}
});
我有一种感觉,我处理这个错误。。。我的计算不应该在模型中进行吗?应该在哪里做?主干是我第一次尝试实现MVC
编辑:
我想出来了。我应该绑定代码以进行更改,而不是覆盖它
window.Print = Backbone.Model.extend({
initialize: function() {
this.bind('change', function() {
this.set({ totalTime: this.calculateTime() }, {silent: true});
});
}
});
我想出来了。我覆盖了render方法,我发现有效的方法是在初始化函数时将我想要的操作绑定到该方法
window.TimeView = Backbone.View.extend({
initialize: function() {
this.bind('change', function() {
this.set({ totalTime: this.calculateTime() }, {silent: true});
});
}
});
您应该在答案中而不是在问题中添加解决方案,然后您可以接受它,它可能会帮助其他搜索类似问题的用户。然后这个问题可以被关闭并存档:它说我必须等8个小时才能这样做:P。关于成为一个新用户的一些事情。理解:P这真的是垃圾邮件保护,但你可以明天再来做:D