2012-08-05 28 views
5

我不想覆蓋Backbone.sync(),因爲我的一些模型實際上會使用標準sync()直接從模型中覆蓋fetch()和save()是不是很好的做法?

直接從模型中覆蓋fetch()save()是不是很好的做法?

+0

如果不想覆蓋'Backbone.sync()',你總是可以覆蓋'MyModel.sync()'。如果你去重寫'MyModel.fetch()'和'MyModel.save()',那麼你可能也必須覆蓋'MyModel.destroy()'。無論如何,我認爲一切都取決於你的理由不使用標準_sync_方法? – fguillen 2012-08-05 14:33:31

+0

@fguillen我的一些模型將使用localStorage,而其他一些將使用服務器端保存... – 2012-08-05 14:34:44

+0

然後我會重寫'MyModel.sync()',是否應該有用於Backbone的LocalStorage的實現。 – fguillen 2012-08-05 15:24:57

回答

4

不需要全局覆蓋sync。您可以按照型號/系列完成,即:

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

這樣可以避免全局覆蓋Backbone.sync。

現在,如果您不需要實施完全同步,例如您只需要覆蓋fetch,那麼您當然也可以在每個型號的基礎上執行此操作。

大概你已經看到了由localStorage版本覆蓋的Backbone.sync。這確實沒有必要(我認爲這是不好的做法)。只需定義自定義sync函數並讓模型/集合使用它就足夠了。

相關問題