覆盖Backbone模型更改事件

Mat*_*hew 8 javascript events backbone.js backbone-events

我想我想要做的很简单,我只是不知道该怎么做.当我的一个模型属性发生更改以便将一些数据传递给事件处理程序时(无论更改是值的增加还是减少),我想触发自己的事件.

基本上我希望我的处理程序在视图中执行此操作

handler: function(increased) {
   if(increased) {
      alert("the value increased")
   }
   else {
      alert("the value decreased")
   }
}

// ...

this.model.on("change:attr", this.handler, this);
Run Code Online (Sandbox Code Playgroud)

ggo*_*zad 12

你走了:你基本上都在听change:myvar.当发生更改时,您可以使用模型previous()来获取旧值.根据它是增加还是减少,你可以点燃相应的事件.你可以听到这些事件,如图所示initialize().

(function($){

    window.MyModel = Backbone.Model.extend({

        initialize: function () {
            this.on('change:myvar', this.onMyVarChange);
            this.on('increased:myvar', function () {                  
                console.log('Increased');                
            });
            this.on('decreased:myvar', function () {                  
                console.log('Decreased');                
            });
        },

        onMyVarChange: function () {
            if (this.get('myvar') > this.previous('myvar')) {
                this.trigger('increased:myvar');  
            } else {
                this.trigger('decreased:myvar');
            }
        }            
    });

    window.mymodel = new MyModel({myvar: 1});
    mymodel.set({myvar: 2});
    mymodel.set({myvar: 3});
    mymodel.set({myvar: 1});

})(jQuery);?
Run Code Online (Sandbox Code Playgroud)

运行上面的内容会在控制台上打印"增加","增加","减少".