Backbone:更改事件后更新模型

时间:2011-12-08 16:19:01

标签: javascript backbone.js

假设具有以下属性的Backbone模型: - 小计 - 折扣 - 总计

每当对折扣进行更改时,总需要更新,我希望模型能够解决此问题。

我尝试将更新方法(在模型中定义)绑定到模型的更改事件(在模型的initialize方法中),这样每次更改事件时,模型都会更新total属性,但这似乎不起作用

var Cost = Backbone.Model.extend({
    initialize  : function() {
        this.bind('change', this.update);
    },

    update      : function() {
        // UPDATE LOGIC
    }
});

在触发更改事件时让模型触发(自己的)方法的最佳方法是什么?

1 个答案:

答案 0 :(得分:9)

您是否使用模型的set方法?当discount发生变化时,这段代码会调用更新:

var Cost = Backbone.Model.extend({
    defaults: {
        subtotal: 0,
        discount: 0,
        total: 0
    },
    initialize: function () {
        _.bindAll(this, "update");
        this.on('change:discount', this.update);
        // or, for all attributes
        // this.on('change', this.update);
    },

    update: function () {
        console.log("update : "+this.get("discount"))
    }
});

var c = new Cost();
c.set({discount: 10});