Javascript 本地存储上Json文件和缓存的主干收集

Javascript 本地存储上Json文件和缓存的主干收集,javascript,json,jquery-mobile,backbone.js,requirejs,Javascript,Json,Jquery Mobile,Backbone.js,Requirejs,我是骨干图书馆的新手。我正在尝试构建一个基于主干网+requirejs+jquerymobile的移动应用程序。我可以用现有的json本地文件填充我的集合。(将来可能来自远程服务器)。 现在我试图让这个集合只被调用一次,然后将它存储在localStorage中以供读取。为此,我尝试使用这个适配器(),但我不明白如何使用 示例代码 是否有人可以为我指路。主干本地存储适配器覆盖集合.sync,该功能在获取集合或保存集合中的模型时使用。如果设置了Collection.localStorage属性,它会

我是骨干图书馆的新手。我正在尝试构建一个基于主干网+requirejs+jquerymobile的移动应用程序。我可以用现有的json本地文件填充我的集合。(将来可能来自远程服务器)。 现在我试图让这个集合只被调用一次,然后将它存储在localStorage中以供读取。为此,我尝试使用这个适配器(),但我不明白如何使用

示例代码
是否有人可以为我指路。

主干本地存储适配器覆盖
集合.sync
,该功能在
获取集合或
保存集合中的模型时使用。如果设置了
Collection.localStorage
属性,它会将调用重定向到本地存储而不是服务器。这意味着您可以对本地存储或服务器进行或(读写)操作,但不能同时进行

这给您留下了两个选择:

  • 执行初始的
    获取
    ,从服务器填充数据,然后设置localStorage属性:

    var self = this;
    
    self.collection.fetch().done(function() {
        self.collection.localStorage = new Backbone.LocalStorage("AzStore");
        self.render();
    }); 
    
  • 像现在一样设置
    Collection.localStorage
    属性,并使用
    Backbone.ajaxSync
    手动获取初始数据集,这是本地存储适配器为
    Backbone.sync
    提供的别名:

    Backbone.ajaxSync('read', self.collection).done(function() {
        self.render();
    }
    
  • 后一个选项可能更可取,因为它不会阻止您稍后从服务器加载数据(如果需要)

    您可以非常巧妙地将功能包装为集合上的方法:

    var AzCollection = Backbone.Collection.extend({
        localStorage: new Backbone.LocalStorage('AzStore'),
        refreshFromServer: function() {
            return Backbone.ajaxSync('read', this);    
        }    
    });
    
    如果要从服务器加载数据,可以调用该方法:

    collection.refreshFromServer().done(function() { ... });
    
    当您想使用本地存储时,可以使用本机
    获取

    collection.fetch().done(function() { ... });
    

    编辑以纠正示例代码中的错误,从而有利于谷歌的驱动

    我很确定我看到了一个更新的localStorage插件,可以让你保存到其中任何一个,我将尝试查找一个链接。好的,我找到了我所指的内容,它是(我自己没用过,我只是记得读过)。谢谢你的回复我帮了我很多。我正在实现第二个选项“refreshFromServer”,但当我调用此方法时,出现了一个错误“必须指定'url'属性或函数”。知道为什么会发生这种情况吗?谢谢你谢谢@jack的链接。我去看看是不是helps@Sandcar,集合必须在上具有url属性,以便主干知道在何处请求数据。见文件。
    collection.fetch().done(function() { ... });