我正在使用Backbone和Requirejs构建单页应用。
现在我一直在从模块文件中返回一个新实例,用以下结尾文件结束:
return new moduleName;
这工作正常,直到我必须将参数传递给集合的initialize方法。由于在创建实例时调用了initialize,因此我从return语句中取出了“new”。
return mymoduleName;
在我的路由器中使用参数实例化集合:
myCollection = new library({paramname: "value"});
这确实创建了一个“库”的实例 - 我的路由器的定义块中引入的一个集合,但是如何将它传递给负责渲染它的视图?
我的视图类在其定义块中具有相同的依赖关系,并且在其初始化中我将其绑定到集合的重置:
this.collection = library;
_.bindAll(this, 'render');
this.collection.bind('reset', this.render);
这在从集合类中删除“new”之前有效(在回顾中根本没有意义!)但是现在视图永远不会被渲染,因为它在路由器中被实例化 - 我如何将相同的实例传递给观点?
答案 0 :(得分:1)
不要在初始化方法中设置集合,而是在实例化视图的地方(在您的情况下,路由器)。
var myCollection = new library({paramname: "value"});
var myView = new myCustomView({
collection: myCollection
});
如果myCollection
是您需要从其他地方访问的变量,您可以在路由器(myRouter.myCollection = ...
)上设置它,您可以创建一个包含全局对象的模型({{1或者你可以简单地拥有一个全局变量(不推荐)。