[英]Routes and controllers in Marionette.js
我是新的Marionette.js。 我目前正在實現路由和控制器。 在我的App.js中,我有:
App.appRouter = new Router({
controller:new AppController()
});
我希望AppController初始化其他控制器。 因此,我有一個GenericController,它在哈希更改為“ generic”時會照看一切,NewsController,是將哈希更改為“ news”時,照看一切。我不想在一個巨型控制器文件中包含所有路由功能。 所以我的AppController看起來像:
define(['App', 'backbone', 'marionette',
"app/models/generic", "app/views/GenericList",
'app/utils/useful_func', 'app/utils/pageslider',
'constants',
'app/controllers/GenericController'
],
function (App, Backbone, Marionette,
model, GenericList,
Useful, PageSlider,
constants,
GenericController) {
return Backbone.Marionette.Controller.extend({
initialize:function (options) {
genericController = new GenericController();
},
});
});
GenericController看起來像:
define(['App', 'backbone', 'marionette'],
function (App, Backbone, Marionette) {
return Backbone.Marionette.Controller.extend({
initialize:function (options) {
},
getGeneric: function(){
console.log('in getGeneric');
},
});
});
路由器看起來像:
appRoutes: {
"generic": "getGeneric",
...
但是,我最終遇到錯誤:
Method 'getGenericItem' was not found on the controller
因為它只是在AppController中查找,而不在GenericController中查找路由器功能。
如果我將getGenericItem()移至主AppController,則可以正常工作。 如何在GenericController中查找路由器功能?
木偶文件 :
建議您將控制器對象划分為較小的相關功能,並具有多個路由器/控制器,而不是僅一個巨型路由器和控制器。
這樣做:
var AppController = Backbone.Marionette.Controller.extend({
initialize:function (options) {
},
customAction: function() {
console.log('in customAction');
}
});
var GenericController = Backbone.Marionette.Controller.extend({
initialize:function (options) {
},
getGeneric: function(){
console.log('in getGeneric');
}
});
App.appRouter = new Marionette.AppRouter({
controller:new AppController(),
appRoutes: {
"custom": "customAction"
}
});
App.genericRouter = new Marionette.AppRouter({
controller: new GenericController(),
appRoutes: {
"generic": "getGeneric"
}
});
這是一個jsbin ,但是它不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.