当构建一个相对较大的应用程序时,我应该如何定义我的路由器?更具体地说,如果我使用requirejs,我有以下代码:
main.js
define('application',['routes/app_router'], function(router){
return Ember.Appcliation.create(
LOG_TRANSITIONS:true,
...
});
requirejs('application',function(application){
var App = window.App = application;
...
}在routes/中,我有app_router.js
define('app_router',['ember'],function(){
...
});那么,我应该向app_router传递一个app来设置App.Router.map...方法,还是应该返回一个Ember.Router.map(...)?如果选择了第一个变量,那么可以肯定的是,依赖关系会发生变化。
换句话说,我应该创建一个“空的”Ember.Application并将其传递给路由器,这样它就可以定义App.Route.map(...方法,因为它引用了this,就像this.route\this.resource...一样,还是应该先调用Ember.Router.create(),然后对它调用map函数,然后从模块返回它并将其设置为App.Router = router。
发布于 2013-06-19 00:42:32
所以我是否应该向我的app_router传递一个应用程序来设置App.Router.map...方法,还是应该返回一个Ember.Router.map(...)?如果选择了第一个变量,那么可以肯定的是,依赖关系会发生变化。
我会选择第二个变种。
换句话说,我是否应该创建一个“空的”Ember.Application并将其传递给路由器,以便它可以定义App.Route.map(...方法,因为它有对此的引用,比如this.route\this.resource...,或者我应该先调用Ember.Router.create(),然后调用它上的映射函数,然后从模块返回它并将其设置为App.Router =router。
都不是。你应该让ember自己创建路由器。你的代码应该做的就是调用App.Router的map fx。我不是require.js专家,但是像这样的东西应该可以工作:
//Define a fx that specifies your applications routes
define('routes',['ember'], function(){
return function() {
this.route("about");
}
});
// Pass that custom routes fx to App.Router.map before routing begins
define('application',['routes'], function(routes){
return Ember.Application.create({
LOG_TRANSITIONS: true,
ready: function() {
this.Router.map(routes);
}
});这是一个jsfiddle showing the basic concept,当然没有require.js。
https://stackoverflow.com/questions/17171925
复制相似问题