我认为我想做的事情很简单,我只是不知道该怎么做。当我的模型属性之一发生更改以便将一些数据传递给事件处理程序时(无论更改是值的增加还是减少),我想触发我自己的事件。
基本上我希望我的处理程序在视图中执行此操作
handler: function(increased) {
if(increased) {
alert("the value increased")
}
else {
alert("the value decreased")
}
}
// ...
this.model.on("change:attr", this.handler, this);
给你:你基本上听的是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);
运行上面的代码将在控制台上打印“Increased”、“Increased”、“Decreased”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)