在requirejs,backbonejs中使用应用程序级持久模型

时间:2014-05-23 10:01:21

标签: javascript backbone.js requirejs

这是我的情况。我在第一个视图中收集了一个成员列表(model = member,collection = members)。然后我希望它们显示在我的第三个视图中。问题是每次我想访问memberList,我必须创建一个新实例,因此数据丢失。我正在使用require.js来模块化视图。如何有效地访问我在第一个视图中实例化的memberList变量?

1 个答案:

答案 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

取决于你,但越少越好。

希望有所帮助。