【发布时间】:2013-06-12 15:24:20
【问题描述】:
我的 marionette.js 应用程序中的循环引用有问题..
问题是:
App.js 使用控制器创建路由器,并且该控制器再次需要 app.js,因此它可以将视图添加到区域。当我打印 Application 时,您可以在下面看到(控制器)由于循环引用而返回 undefined..
controller.js:
define(
['app', 'views/ProjectItemView'],
function (Application, ProjectItemView)
{
'use strict';
console.log(Application); // undefined
return Marionette.Controller.extend({
showProjects : function()
{
Application.main.show(new ProjectItemView());
console.log('project');
}
});
}
);
router.js:
define
(
['marionette'],
function(Marionette)
{
'use strict';
return Marionette.AppRouter.extend
(
{
appRoutes:
{
'dashboard/projects' : 'showProjects'
}
}
);
}
);
app.js
define
(
[
'backbone', 'marionette', 'jquery', 'routers/DashboardRouter', 'controllers/DashboardController',
'views/dashboard/Header'
],
function(Backbone, Marionette, $, DashboardRouter, DashboardController, Header)
{
'use strict';
var app = new Marionette.Application();
app.addRegions({
header: '#header',
main: '#main',
});
app.header.show(new Header());
app.on('initialize:after', function () {
Backbone.history.start({pushState: true});
app.router = new DashboardRouter({
controller : DashboardController
});
});
$(document).on("click", "a[href^='/']", function(event)
{
var href = $(event.currentTarget).attr('href');
console.log(href);
event.preventDefault();
app.router.navigate(href, {trigger: true});
return false;
});
return app;
}
);
现在解决这个问题的最佳方法是什么?我对此完全陌生,所以我真的不知道最佳做法是什么..
在控制器中添加视图是否正确?还是我应该在其他地方这样做?
提前致谢
【问题讨论】:
-
能否请您发布您的应用文件?
-
是的,我已经添加了,请看一下 :)
标签: javascript backbone.js requirejs marionette