【发布时间】:2014-11-16 17:50:31
【问题描述】:
我是 Marionette.js 的新成员。我目前正在实施路线和控制器。在我的 App.js 中,我有:
App.appRouter = new Router({
controller:new AppController()
});
我希望 AppController 初始化其他控制器。因此,我有一个 GenericController,它在哈希更改为“通用”时负责处理所有事情,NewsController 在哈希更改为“新闻”时负责处理所有事情等。我不想将所有路由功能都放在一个巨大的控制器文件中。所以我的 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 中查找路由器功能?
【问题讨论】:
标签: javascript backbone.js marionette