2013-08-27 13 views
5

Backbone documentation dice,Backbonejs - Evitare parse dopo salvare

parse viene chiamato ogni volta che i dati di un modello viene restituito dal server, in prendere, e risparmiare. La funzione passa l'oggetto di risposta non elaborato e deve restituire l'hash degli attributi da impostare nel modello.

Ma ho personalizzato la funzione di analisi per il mio modello. Voglio eseguirlo solo quando recupero i dati non quando salvi i dati.

C'è un modo per farlo? Posso controllare la mia risposta all'interno della funzione di analisi. Ma c'è qualche opzione integrata per farlo?

+0

possibile duplicato: [qui] (http://stackoverflow.com/q/18243514/722238). Controlla anche [questo] (https://github.com/jashkenas/backbone/pull/2551). – fbynite

risposta

7

Questo dalla spina dorsale source file per quanto riguarda il salvataggio di un modello:

var model = this; 
var success = options.success; 
options.success = function(resp) { 
    model.attributes = attributes; 
    var serverAttrs = model.parse(resp, options); 
    if (options.wait) serverAttrs = _.extend(attrs || {}, serverAttrs); 
    if (_.isObject(serverAttrs) && !model.set(serverAttrs, options)) { 
     return false; 
    } 
    if (success) success(model, resp, options); 
    model.trigger('sync', model, resp, options); 
}; 

Si potrebbe passare un'opzione personalizzata sul tuo save come: model.save(null, { saved: true }), poi nella vostra abitudine parse:

parse: function(response, options) { 
    if (options.saved) return this.attributes; 
    // do what you're already doing 
} 

Mi rifugio questo è stato provato, ma almeno dovrebbe iniziare.

+0

fantastici funziona alla grande. Grazie. – user10

4

Basta passare un analisi: falso nel metodo di salvataggio come opzione.

m = new MyModel() 
s.save(null, {parse: false}) 
Problemi correlati