2011-06-30 4 views
6

Aşağıdaki omurga görünümü vardır:backbone.js değiştirilen etkinlik başarılı bir alma sonra tetiklenmiyor getirme

sınıf Gözlem

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) 

Ben bağlayıcı am modelin değiştirilen etkinlik işlemek yöntemine Backbone.Model uzanır Gözlemler Görünümü. Model omurga koleksiyonudur.

Getirme başarılı bir şekilde çalışıyor ancak değiştirilen olay tetiklenmiyor. Manuel tetiği çaresizlikten deniyorum.

Neyi yanlış yaptığımı gören var mı?

cevap

5

Olay 'değiştirildi' olarak adlandırılmıyor. Modelin koleksiyonunun sunucudan yenilenmesinden sonra tetiklenen olay "yenilenir".

'Değişiklik' olayı aslında daha karmaşıktır. Bu .set() istediğim zaman tetiklenen bir model üzerinde bir olay olduğunu ve her zaman niteliğini geniş, artık gibi şeyler yazmak isterim: Her zaman olduğu gibi

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

, backbone.js kaynak kodu fazlasıyla okunabilir.

+1

Modelin koleksiyonu yenilentikten sonra tetiklenen olay aslında 'sıfırlama' değil, 'sıfırlama' olur. –