我有类似的主干视图
var EditorView = Backbone.View.extend({
//.....
});
var CellView = Backbone.View.extend({
editor: EditorView
initialize: function (optionValues,multiple) {
//....
this.listenTo(this.editor,'change',this.render);
}
//.....
});
但以上内容只听事件一次,不听两次。
我应该如何使用listenTo
函数,以便视图始终侦听模型的事件。
您正在从视图的构造函数侦听事件。EditorView
是一个构造函数,而不是视图的实例。
您应该使用全局消息传递在视图之间进行通信:
var EditorView = Backbone.View.extend({
//.....
change : function() {
Backbone.trigger('editor:change');
}
});
var CellView = Backbone.View.extend({
initialize: function (optionValues,multiple) {
this.listenTo(Backbone,'editor:change',this.render);
}
});
或者在创建单元格视图时传递编辑器的实例:
var CellView = Backbon.View.extend({
initialize: function( options ) {
this.editor = options.editor;
this.listenTo( this.editor, 'change', this.render );
}
});
我认为全球营销风格更清晰,更具灵活性。