2013-06-18 2 views
1

При построении относительно большого приложения, как я должен определить свой маршрутизатор? Более конкретно, при использовании requirejs У меня есть следующий код:Emberjs Router with 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 моему app_router, чтобы установить App.Router.map... метод или я должен вернуть Ember.Router.map(...)? Если первый вариант выбран, то, конечно, зависимости меняются.

Другими словами, я должен создать «пустой» Ember.Application и передать его на маршрутизатор, чтобы он мог определить метод App.Route.map(..., так как он имеет отношение к this, как this.route\this.resource..., или я должен вызвать Ember.Router.create() затем вызвать функцию map на нем, затем верните это из модуля и установите его на App.Router = router.

ответ

1

Должен ли я передать приложение в свой app_router для установки метода App.Router.map ... или мне нужно вернуть Ember.Router.map (...)? Если первый вариант выбран, то, конечно, зависимости меняются.

Я бы пошел со вторым вариантом.

Другими словами, я должен создать «пустой» Ember.Application и передать его на маршрутизатор, чтобы он мог определить App.Route.map (... метод, так как он имеет отношение к этому, как this.route \ this.resource ... или я должен вызвать Ember.Router.create(), затем вызвать функцию карты на нем, а затем вернуть это из модуля и установить его в App.Router = маршрутизатор.

Вы также должны разрешить ember создавать сам маршрутизатор. Весь ваш код должен выполнять вызов приложения App.Router. Я не специалист 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, конечно.

+0

Большое спасибо! – Pio