如何从更改事件的编辑器视图中调用单元格视图的渲染方法?

时间:2013-07-18 13:53:48

标签: javascript backbone.js backbone-events backgrid

我有像

这样的骨干视图
var EditorView = Backbone.View.extend({
  //.....
});

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

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

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

1 个答案:

答案 0 :(得分: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 );
  }
});

我认为全球搜索风格更清晰,更灵活。