繁体   English   中英

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

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

我有这样的骨干观点

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是构造函数,而不是视图的实例。

您应该使用全局Messenger在视图之间进行通信:

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

我认为全局Messenger风格更加清晰,并且具有更大的灵活性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM