你如何取代Backbone.sync而不做任何事情?我的應用程序有一個「提交」按鈕,它將爲我執行AJAX POST,所以我不想使用Backbone.sync提供的auto-magic默認行爲。如何取代Backbone.sync,甚至沒有localStorage?
我也不想用,因爲我努力使本站兼容IE6和7
話雖這麼說,我幾乎只想骨幹什麼都不做,除了保留記錄骨幹localStorage的適配器在JS內存中(類似於Spine.js)。這甚至有可能嗎?
你如何取代Backbone.sync而不做任何事情?我的應用程序有一個「提交」按鈕,它將爲我執行AJAX POST,所以我不想使用Backbone.sync提供的auto-magic默認行爲。如何取代Backbone.sync,甚至沒有localStorage?
我也不想用,因爲我努力使本站兼容IE6和7
話雖這麼說,我幾乎只想骨幹什麼都不做,除了保留記錄骨幹localStorage的適配器在JS內存中(類似於Spine.js)。這甚至有可能嗎?
最簡單也是最好的方法是取代Backbone.Sync,而不是簡單地忽略它。這裏有你不想調用的方法:
類別:
型號:
如果您避免調用這些方法中的任何一種,您將有效地忽略Backbone.Sync並能夠編寫自己的代碼來執行AJAX調用。
當我開始時,我寫了很多Backbone代碼,沒有涉及服務器調用。沒有規則說你必須使用Backbone的所有功能。事實上,我會說相反的事實。骨幹網以這種模塊化的方式編寫,每個功能和專業領域都非常好,所以你應該只使用你實際需要的東西。
在內存中創建您的模型,請撥打set
和get
來存儲數據。根據需要將它們填入add
和remove
。將模型和集合傳遞給您的視圖並將其呈現給HTML DOM。只要避免調用上面列出的方法,您就不必擔心Backbone.Sync。
謝謝。這非常有意義。在旁註中,如果你不使用Model.destroy(),你如何正確「銷燬」某些東西?使用collection.remove並綁定到remove事件? – kidcapital
是的,那樣做。在任何有參考的地方去除引用模型,它將被垃圾收集。 –
我曾將this gist作爲Backbone.js教程的一部分。它僞造Backbone.sync
只寫日誌,但爲了賦予其真實感,它還將模型的.cid
屬性複製到它的.id
屬性中,以使模型顯示爲同步。謹防在生產中使用該技術的各種不必要的後果!但我們都在這裏同意大人,對吧?
這裏沒有記錄了同樣的想法:
Backbone.sync = function(method, model, succeeded) {
if(typeof model.cid != 'undefined') {
// It's a freshly made model
var cid = model.cid;
// ..fake that it's .cid turns into a "real" .id:
model.unset('cid').set({id:cid}, {silent:true});
}
// Oh yes, it all went sooo well ;-)
succeeded(model);
};
我認爲自你寫這個以來API已經發生了變化,因爲第三個參數不是回調函數。我只是'返回false',它似乎工作正常。但是你提到了「各種不需要的後果」 - 如果我的所有數據都是客戶端的,不需要持久性,那會是什麼? –
簡單,不要用骨幹,並切換到一個簡單的跨瀏覽器的Ajax處理程序。 – 2011-10-13 04:29:05