2011-06-30 8 views
6

tengo la vista siguiente columna vertebral:Backbone.js traen cambiada evento no disparar después de una obtención correcta

Observación clase extiende 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) 

estoy Encuadernación evento modificado del modelo al método render de ObservationsView. El modelo es una colección troncal.

la zona de alcance está funcionando correctamente pero no está siendo disparado el evento modificado. Estoy intentando el gatillo manual por desesperación.

Puede alguien ver lo que estoy haciendo mal?

Respuesta

5

El evento no se llama 'cambiado'. El evento desencadenado después de la recolección del modelo se ha actualizado desde el servidor es 'actualización'.

El evento 'cambio' en realidad es más complicada. Es un evento en un modelo que se activa cada vez que se llama a .set(), y siempre incluye el atributo, por lo que escribiría cosas como:

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

Como siempre, el código fuente Backbone.js es fácil de leer.

+1

El evento disparado después de la recolección del modelo ha sido renovado es en realidad 'reset', no 'actualización'. –

Cuestiones relacionadas