2011-06-30 37 views
6

我有以下看法骨幹:Backbone.js的提取成功後更改事件不觸發取

課堂觀察擴展Backbone.Model

class Observations extends Backbone.Collection 
    model: Observation 

    constructor: -> 
    @url = _observationsUrl 

class ObservationsView extends Backbone.View 
    el: $('#observations') 

    initialize: -> 
    _.bindAll @  
    @model.bind 'changed', @render 
    @model.view = @ 
    that = @ 
    @model.fetch { 
     success: -> 
     alert('success') 
     that.model.trigger 'changed' 
    } 

    render: => 
     alert('rendering baby') 

class ObservationsController extends Backbone.Controller 
    initialize: -> 
    observations = new Observations() 
    observationsView = new ObservationsView(model: observations) 

我綁定模型的改變事件的渲染方法的ObservationsView。該模型是一個骨幹收集。

獲取正在成功,但被更改的事件未被觸發。我正在嘗試用絕望手工觸發。

任何人都可以看到我做錯了什麼?

回答

5

該事件不稱爲「更改」。模型集合從服務器刷新後觸發的事件是'刷新'。

「更改」事件實際上更復雜。這是不管你什麼時候打電話.set()那就會觸發這個模型的事件,它總是包含的屬性,所以你寫的東西,如:

this.model.bind('change:username', _.bind(this.update_username_display, this)) 

與往常一樣,Backbone.js的源代碼,絕對有可讀性。

+1

模型集合刷新後觸發的事件實際上是「重置」,而不是「刷新」。 –