0

私は次のようなバックボーンビューを持っています

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

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

ただし、上記はイベントを 1 回だけリッスンするだけで、2 回ではありません。

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 に答える