2013-03-24 12 views
18

Questa è la mia vista per una collezionecollezione spina dorsale recuperare non sparare reset()

var mssg = mssg || {}; 

mssg.MessagesView = Backbone.View.extend({ 

el: '#messages', 

initialize: function() { 
    this.collection.fetch(); 
    this.collection.bind('reset', this.render, this); 
}, 

render : function() { 
    this.$el.html(''); 
    this.collection.each(function(item) { 
     this.renderMessage(item); 
    }, this); 
    return this; 
}, 

renderMessage : function(item) { 
    var messageView = new mssg.MessageView({ 
     model : item 
    }); 
    this.$el.append(messageView.render().el); 
} 

}); 

questa è la collezione

var mssg = mssg || {}; 

mssg.Messages = Backbone.Collection.extend({ 
    model : mssg.Message, 
    url : 'messages' 
}); 

e questo è il modo in cui viene inizializzato:

var mssg = mssg || {}; 

$(function() { 
    new mssg.MessagesView({ 
     collection : new mssg.Messages() 
    }); 
}); 

Il problema è che la funzione render associata a reset non viene attivata dopo la richiesta di recupero ajax.

Se lo si associa a add, funziona. Ho provato a legare all a una funzione debuggin e dice che l'evento sync viene chiamato insieme a add per ogni articolo.

+2

Provare this.collection.fetch ({reset: true})? – nikoshr

+0

@nikoshr grazie che ha funzionato! Pensavo fosse implicito tho? –

risposta

33

Se si seleziona spina dorsale change log, vedrai che il modo in cui viene gestito recuperare cambiato in 1.0: "update"

Rinominato di Insieme per impostare, per il parallelismo con il simile model.set(), e contrasto con reset. Ora è il meccanismo di aggiornamento predefinito dopo il recupero. Se vuoi continuare a utilizzare "reset", passare {reset: true}

Quindi, per attivare un evento di reset, è ora necessario utilizzare

this.collection.fetch({reset: true}) 
+0

cool grazie, è una nuova app quindi ho semplicemente passato al nuovo valore predefinito ('set') –

0

nella spina dorsale 1.0, è necessario innescare ripristino a mano:

youColloection.fetch({reset: true}); 
Problemi correlati