2012-08-05 17 views
5

Non voglio eseguire l'override di Backbone.sync() poiché alcuni dei miei modelli utilizzeranno lo standard sync().È buona norma sovrascrivere fetch() e save() direttamente dal modello?

È buona norma eseguire l'override di fetch() e save() direttamente dal modello?

+0

Se non si desidera sovrascrivere 'Backbone.sync()' è sempre possibile sovrascrivere 'MyModel.sync()'. Se si va a sovrascrivere 'MyModel.fetch()' e 'MyModel.save()' forse si deve sovrascrivere anche 'MyModel.destroy()'. Comunque penso che tutto dipenda dal tuo motivo per non usare i metodi standard _sync_? – fguillen

+0

@fguillen Alcuni dei miei modelli useranno localStorage mentre altri useranno il risparmio sul lato server ... –

+0

Quindi lo faremo sovrascrivendo 'MyModel.sync()', dovremmo esserci le implementazioni di LocalStorage per Backbone. – fguillen

risposta

4

Non è necessario eseguire l'override di sync a livello globale. Si può fare per modello/Collezione cioè,

var MyModel = Backbone.Model.extend({ 
    sync: customSync, 
    ... 
}); 

Questo evita l'override Backbone.sync a livello globale.

Ora, se non è necessario implementare una sincronizzazione completa, ad esempio è sufficiente eseguire l'override di fetch, ovviamente è possibile farlo anche in base al modello.

Presumibilmente, si è visto Backbone.sync sovrascritto dalla versione localStorage. Questo non è davvero necessario (penserei che sia una cattiva pratica). È sufficiente definire la funzione personalizzata sync e utilizzarla per modelli/raccolte.

Problemi correlati