2013-11-27 87 views

回答

1

Backbone不處理更新視圖的數據更改(默認情況下)。

讓我們來看看。

Backbone.Model擁有Backbone.Events的所有方法。所以當數據改變時,Model調用this.trigger()函數。

但你應該訂閱的「改變」事件來處理所有數據操作:

myModel.on('change:attributeName', myView.render, myView); 

也許倒不如說,骨幹網使用setter和Backbone.Events觀察數據的變化。

+0

它是這樣的,主幹沒有自動綁定功能?我們必須爲它編碼? –

+0

@PaulShan。但隨意使用一些插件,如[epoxyjs](http://epoxyjs.org/)進行數據綁定。 – Nazar

+0

至於我,最好使用'model.on('change',view.render)'。但一切都取決於你自己的情況 – Nazar

1

正如@Leestex所回答的,骨幹不會爲您綁定數據更改。

但是,最好在視圖內部使用listenTo。例如:

MyView = Backbone.View.extend({ 

    initialize: function() { 
    this.listenTo(this.model, 'change', this.render); 
    } 

}); 

見: http://backbonejs.org/#Events-listenTo

另一種爲視圖聽模型事件是一個處理程序附加到模型,就像這樣:

this.model.on('change', this.render); 

但它通常是不建議,因爲你必須使用off()手動分離處理程序。當您收聽多個型號時,可能會變得雜亂,並可能導致 zombie views

使用listenTo()的好處是您可以撥打stopListening(),它將取消綁定與該對象關聯的回調。在這種情況下,該對象是視圖。