一個小例子代碼會很有用。
我不確定你是如何在第一次運行時從服務器加載項目列表的,如果你已經獲得本地存儲器的工作,但是,這是我可能把它放在一起的方式。
最簡單的方法是在應用程序運行期間,如果您從不需要返回服務器刷新任何模型,則只需從嵌入在應用程序中的服務器提供模型,然後在您創建您的收藏:
foo = new MyCollection(myJSONthatContainsAllTheModels)
欲瞭解更多信息,請參閱骨幹文檔Bootstrapping。
如果需要,在應用程序的運行過程中,從服務器定期刷新,然後..
使用骨幹,localStorage的是,有一個變化。這意味着它會覆蓋同步方法和任何正常的「獲取」,「保存」等功能將操縱本地存儲。改變的方法是在將Backbone.Sync替換爲LocalStorage版本之前,將原始Backbone.Sync複製到名爲Backbone.ServerSync之類的新函數中。這保留了REST同步。
然後,我會用一個新的函數來擴展Backbone.Collection,它使用Backbone.ServerSync函數從服務器獲取數據。
它看起來不像backbone-localstorage干擾集合的URL屬性,所以你應該可以很容易地做到這一點。
爲了清楚起見,稱爲serverfetch的這個新的集合函數或多或少是fetch的克隆,但是使用Backbone.ServerSync方法而不是Backbone.Sync。
從服務器獲取響應並解析它之後,它會爲每個應將它們提交到本地存儲的模型調用add。
非常感謝Edward!你讓我走上正軌。我確實按照你的建議實施了它,它很有魅力。然而,我卻沒有選擇從服務器引導初始負載。因爲只有當數據不在本地存儲中時纔會發生這種情況,所以似乎沒有必要始終用胖的JSON對象來減少頁面的大小。 –
非常好!很高興聽到它解決。 –
我是Backbone的初學者,很長時間以來一直在尋找這個解決方案,但是任何一個人都可以在jsfiddle上提供示例示例 - 從服務器獲取數據並將其存儲在本地存儲中 –