backbone.js - 使用没有数据源的 Backbone Collection(无 url)

标签 backbone.js marionette

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

我正在为一个小应用程序使用主干,并发现使用集合来存储一些仅在当前 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与服务器通信的方法,即 sync , fetch , 和 save ... 例如:

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 - 使用没有数据源的 Backbone Collection(无 url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346228/

相关文章:

javascript - OLS 回归 JS 库

Backbone.js:如何从一个 View 重定向到另一个 View ?

javascript - 主干集合无法删除项目

javascript - 没有从 appRouter 调用 Backbone Marionette Controller 方法

jquery - 无法使用 require.js 从backbone.marionette 中的不同文件扩展模型

events - 如何在 View 中使用 Backbone.EventBinder

javascript - 我们如何使用 javascript 对象中的字符串名称存储来创建 Backbone View 的实例?

jquery - 从 $.get w/Backbone.js 内部访问 this.model

javascript - Backbone 意外发出多个 ajax 请求

javascript - Marionette 如何将渲染 View 附加到 DOM