0

我有像这样的主干视图

var EditorView = Backbone.View.extend({
  //.....
});

var CellView = Backbone.View.extend({
  editor: EditorView
  initialize: function (optionValues,multiple) {
  //....
  this.listenTo(this.editor,'change',this.render);
 }
  //.....
});

但上面只听事件一次,而不是两次。

我应该如何使用listenTo函数,以便视图始终监听模型的事件。

4

1 回答 1

0

您正在从视图的构造函数中侦听事件。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 );
  }
});

我认为全局消息传递的风格更清晰,提供了更多的灵活性。

于 2013-07-18T18:47:48.133 回答