我正在尝试收听模型的特定属性(transitions
,数字计数)。在视图中,我有this.listenTo(this.model, 'change', _.bind(this.transition, this));
来监听整个模型更改事件。但是,以下情况不起作用:
this.listenTo(this.model, 'change:transitions', _.bind(this.transition, this));
我应该使用什么语法结构或方法调用?如果需要不同的BB方法调用,有什么区别?
型号:
define([
'underscore',
'backbone'
], function(_, Backbone) {
var RepresentationModel = Backbone.Model.extend({
initialize: function(options){
this.representationType = options.representationType;
this.previousRepresentationType = undefined;
this.transitions = 0;
},
transition: function(newRep){
this.set({
previousRepresentationType: this.representationType,
representationType: newRep,
transitions: this.transitions+1
});
}
});
return RepresentationModel;
});
听力观点:
...
this.listenTo(this.model, 'change', _.bind(this.transition, this));
...
调用视图:(与收听视图不同)
var measureRepColl = StageCollection.get(hTrackCID).get('measures').models[0].get('measureRepresentations').get(measureRepCID).transition(newRepType);
答案 0 :(得分:1)
你有什么应该工作。由于其他原因,模型很可能不会触发change:transitions
更改事件。调查(或发布片段)您希望在模型上设置transitions
属性的代码。
附注可以指定上下文,因此不需要_.bind
:this.listenTo(this.model, 'change:transitions', this.transition, this);