这是我的情况。我正在第一个 View 中收集成员列表(模型=成员,集合=成员)。然后我希望它们显示在我的第三个 View 中。问题是每次我想访问memberList时,我都必须创建一个新实例,因此数据会丢失。我正在使用 require.js 来模块化 View 。如何有效地访问我在第一个 View 中实例化的 memberList 变量?
最佳答案
一种快速但肮脏的方法是在 AMD 模块中返回 new Collection() 。 Require.js 会缓存这个,每次你需要它时,它都会返回相同的实例 示例:
define(function(require){
var Backbone = require('backbone');
return new Backbone.Collection.extend({});
});
我不推荐这种方式,尽管原因很难测试。
另一种方法是拥有一个对象应用程序,您可以保存对集合、模型等的引用,然后在模块中需要它,例如 https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.md
另一种方法是使用一个中介器来为您实例化集合,并将集合中的方法公开给您的其他模块。您需要调解者而不是集合。 http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript
这取决于你,但耦合越少越好。
希望有帮助。
关于javascript - 在 requirejs、backbonejs 中使用应用程序级持久化模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23826293/