2013-07-18 19 views
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函數,以便視圖始終監聽模型的事件。

回答

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

我認爲全球信使風格更清晰並提供更多的靈活性。