Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何创建一个模块的实例并使用requirejs将其传递给另一个模块?_Backbone.js_Requirejs - Fatal编程技术网

Backbone.js 如何创建一个模块的实例并使用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"});

我正在构建一个带有主干和Requirejs的单页应用程序

目前,我已从模块文件返回了一个新实例,文件结尾为:

 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 
});