0

我正在使用 Backbone 和 Requirejs 构建一个单页应用程序。

现在我一直从我的模块文件中返回一个新实例,文件结束为:

 return new moduleName;

这工作正常,直到我不得不将参数传递给集合的初始化方法。由于在创建实例时调用了初始化,因此我将“新”从 return 语句中取出。

return mymoduleName;

并在我的路由器中使用参数实例化集合:

myCollection = new library({paramname: "value"});

这确实创建了一个“库”实例——在我的路由器的定义块中引入的一个集合,但是我如何将它传递给负责渲染它的视图呢?

我的视图类在其定义块中具有相同的依赖关系,并且在其初始化中我将其绑定到集合的重置:

this.collection = library;
_.bindAll(this, 'render');
this.collection.bind('reset', this.render);

这在从集合类中删除“新”之前有效(回顾起来根本没有意义!)但是现在视图永远不会被渲染,因为它是在路由器中实例化的——我如何将同一个实例传递给视图?

4

1 回答 1

1

不要在其初始化方法中设置集合,而是在您实例化视图的任何位置(在您的情况下为路由器)。

var myCollection = new library({paramname: "value"});
var myView = new myCustomView({ 
    collection: myCollection 
});

如果myCollection是一个您还需要从其他地方访问的变量,您可以在路由器(myRouter.myCollection = ...)上设置它,您可以创建一个包含全局对象的模型(MyAppGlobals),或者您可以简单地拥有一个全局变量(不推荐)。

于 2012-05-11T09:48:05.343 回答