第一次在这里发布...期待看到它如何工作,但是非常感谢阅读其他人的问题和答案。

我正在使用小型应用程序的主干,发现使用集合存储仅在当前 session 期间需要的某些信息会有所帮助。 (我有很多集合,所有其他集合都连接到我的API来存储/检索数据)。

我在这里(in backbone.js can a Model be without any url?)读到有可能,甚至可以在不提供url的情况下使用集合。

现在,我想向集合中添加一行数据...简单:

myCollection.create(data);

但是,现在当然会引发错误:
Uncaught Error: A "url" property or function must be specified

有什么方法可以使用Backbone集合,是否可以向其中添加新的数据行(模型),但不能同步到任何种类的数据源。或者您可以建议其他解决方案。

我想我可以只使用一个对象来保存数据,但是我享受的是一致性和功能性。

我正在使用Backbone.Marionette,如果有任何影响。

提前致谢。

最佳答案

您可以做的一件事是重写与服务器通信的Backbone.Model方法,即syncfetchsave ...例如:

var App = {
    Models: {},
    Collections: {}
};

App.Models.NoUrlModel = Backbone.Model.extend({});
App.Models.NoUrlModel.prototype.sync = function() { return null; };
App.Models.NoUrlModel.prototype.fetch = function() { return null; };
App.Models.NoUrlModel.prototype.save = function() { return null; };

App.Collections.NoUrlModels = Backbone.Collection.extend({
    model: App.Models.NoUrlModel,
    initialize: function(){}
});

var noUrlModels = new App.Collections.NoUrlModels();
noUrlModels.create({'foo': 'bar'});  // no error
// noUrlModels.models[0].attributes == {'foo': 'bar'};

See Demo

关于backbone.js - 使用没有数据源的主干集合(无URL),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18346228/

10-16 10:28