2

我想在我的应用程序中使用backbone.localStorage.js插件,这是一个代码示例:

Module.Vehicles = Backbone.Collection.extend({
        initialize : function(options) {
            this.customerId = options.customerId;
        },
        url : function() {
            var url = App.Config.RESTPath + '/vehicle';
            if(this.customerId) {
                url = url + '?customerId='+this.customerId;
            }
            return url;
        },
        localStorage: new Backbone.LocalStorage("vehicles"),
        model : Module.Vehicle,
        parse : function(response) {
            this.allVehiclesNumber = response.allVehiclesNumber;
            this.customers = response.customers;
            return response.vehicles;
        }
    });

    Module.getVehicles = function(customerId) {
        var result = new Module.Vehicles({
            'customerId' : customerId
        });
        result.fetch();
        return result;
    };

如果我在该行中添加评论,一切都很好(收藏有适当的记录):

localStorage: new Backbone.LocalStorage("vehicles"),

但如果不是注释端,则没有记录获取。

我错过了什么?

BR,托马斯。

4

1 回答 1

0

如果您检查Backbone.localStorage源代码,您会看到它覆盖了 Backbone 同步其数据的方式:如果您localStorage在模型/集合中有声明,则正常同步将被丢弃并由本地存储替换。

您可以通过提供自己的自定义来更改此行为Backbone.sync。例如,这将使用两个版本:

Backbone.sync = function(method, model, options) {
  if(model.localStorage || (model.collection && model.collection.localStorage)) {
    Backbone.localSync.call(this, method, model, options);
  }

  return Backbone.ajaxSync.call(this, method, model, options);
};

还有一个可以玩的小提琴http://jsfiddle.net/nikoshr/F7Hkw/

于 2014-01-03T09:20:59.500 回答