Backbone.js 如何创建一个模块的实例并使用requirejs将其传递给另一个模块?
我正在构建一个带有主干和Requirejs的单页应用程序 目前,我已从模块文件返回了一个新实例,文件结尾为:Backbone.js 如何创建一个模块的实例并使用requirejs将其传递给另一个模块?,backbone.js,requirejs,Backbone.js,Requirejs,我正在构建一个带有主干和Requirejs的单页应用程序 目前,我已从模块文件返回了一个新实例,文件结尾为: return new moduleName; 在我必须将参数传递给集合的initialize方法之前,这一切都是正常的。由于在创建实例时调用initialize,因此我从return语句中去掉了“new” return mymoduleName; 并使用我的路由器中的参数实例化集合: myCollection = new library({paramname: "value"});
return new moduleName;
在我必须将参数传递给集合的initialize方法之前,这一切都是正常的。由于在创建实例时调用initialize,因此我从return语句中去掉了“new”
return mymoduleName;
并使用我的路由器中的参数实例化集合:
myCollection = new library({paramname: "value"});
这确实创建了一个“library”实例——路由器的define块中引入的集合,但如何将其传递给负责渲染它的视图
“我的视图”类在其定义块中具有相同的依赖项,在其初始化中,我将其绑定到集合的重置:
this.collection = library;
_.bindAll(this, 'render');
this.collection.bind('reset', this.render);
这在从collection类中删除“new”之前就起作用了(这在回顾中毫无意义!),但现在视图永远不会被渲染,因为它是在路由器中实例化的-我如何将同一个实例传递给视图?不要在其initialize方法中设置集合,而是在实例化视图的任何地方(在您的情况下,路由器)
如果
myCollection
是一个您也需要从其他地方访问的变量,您可以在路由器上设置它(myRouter.myCollection=…
),您可以创建一个保存全局对象的模型(MyAppGlobals
),或者您只需要一个全局变量(不推荐).谢谢,同时我让它处理以下内容-不确定这是否真的是你说的:library=newlibrary({paramname:“value”});myView=newview({collection:library});然后,在视图的initialize:initialize:function(opts){this.collection=opts.collection;}所以基本上,我有点困惑“不要在initialize中设置集合”-这不是处理构造函数参数的地方吗?如果您查看主干文档,就不需要在initialize中执行'this.collection=opts.collection'创建新视图时,您传递的选项将作为this.options附加到视图,以供将来参考。有几个特殊选项,如果传递,将直接附加到视图:模型、集合、el、id、类名、标记名和属性。“()
var myCollection = new library({paramname: "value"});
var myView = new myCustomView({
collection: myCollection
});