这是我的情况。我在第一个视图中收集了一个成员列表(model = member,collection = members)。然后我希望它们显示在我的第三个视图中。问题是每次我想访问memberList,我必须创建一个新实例,因此数据丢失。我正在使用require.js来模块化视图。如何有效地访问我在第一个视图中实例化的memberList变量?
答案 0 :(得分:1)
快速脏的方法是在AMD模块中返回新的Collection()。 Require.js将缓存此值,每次需要它时,它将返回相同的实例 例如:
define(function(require){
var Backbone = require('backbone');
return new Backbone.Collection.extend({});
});
我不推荐这种方式,但原因很难测试。
另一种方法是拥有一个对象APP,您可以保存对集合,模型等的引用,然后在您的模块中需要它,如https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.md
另一种方法是让Mediator为您实例化Collection,并将方法从集合中暴露给您的其他模块。你需要调解员而不是集合。 http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript
取决于你,但越少越好。
希望有所帮助。