如何在发生更改事件时从编辑器视图调用单元格视图的render方法

How to call render method of a cell view from the editor view upon change event?

本文关键字:视图 调用 编辑器 单元格 方法 render 事件      更新时间:2023-09-26

我有类似的主干视图

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 );
  }
});

我认为全球营销风格更清晰,更具灵活性。