我在外部fetch()
函数中读取了一个大的xml文件,这很安静。我的问题是,如何将已填充的集合保存到本地存储?如果本地存储已经存在,我该如何测试?否则,fetch()
将被执行。
我在哪里需要在集合中添加代码? save()
? localStorage: new Backbone.LocalStorage("test_storage")
?
此示例显示了一小段代码:
var test_collection = Backbone.Collection.extend( .. );
var test_collection_view = Backbone.View.extend( .. );
//--------------------------------------
// external fetch
//--------------------------------------
function fetch(){
return $.ajax({
url: 'TestInterface.xml',
method: 'GET',
dataType: 'xml',
success: function(response_xml) {
... //parse data to test_collection
}//end success
});//end ajax
}//end fetch
//--------------------------------------
// Initialize
//--------------------------------------
$(document).ready(function(){
$.when( fetch() ).done(function() {
var VIEW = new test_collection_view({collection: test_collection});
});//end when
});//end ready
更新:
我还可以推荐这个用于延迟的进一步步骤:
答案 0 :(得分:2)
您可以使用JSON.stringify()
保存您的收藏:
test_collection.fetch({
success: function(collection, response) {
// Store an array containing the attributes hash of each model
// in the collection.
var collectionJSON = collection.toJSON();
// Store the collection as a JSON string.
localStorage.setItem('collection', JSON.stringify(collectionJSON));
}
});
然后您可以使用以下方法检索您的收藏数据:
var collectionString = localStorage.getItem('collection');
var collection = JSON.parse(collectionString);
检查集合是否已存储:
if (localStorage.getItem('collection') !== null) {
// ...
}
实现此目标的最佳方法是在fetch()
例程中。首先检查是否存储了集合,如果是,则返回,否则获取它。