Javascript 通过向模型添加“更改”方法,我的视图不再绑定到它?

Javascript 通过向模型添加“更改”方法,我的视图不再绑定到它?,javascript,backbone.js,Javascript,Backbone.js,我仍在试图了解Backbone.js的工作原理。我有一个模型,每当其中一个属性发生更改时,我都希望运行计算 window.Print = Backbone.Model.extend({ change: function () { this.set({ totalTime: this.calculateTime() }, {silent: true}); } 这很有效。无论何时修改属性,都会触发change方法并完成计算 问题是,有了变更方法,我的视图不再在变更上

我仍在试图了解Backbone.js的工作原理。我有一个模型,每当其中一个属性发生更改时,我都希望运行计算

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