我正在构建一个backbone.js + require.js 应用程序,我遇到了以下问题。要构建我的应用程序,我有一个App.js
文件,其内容如下:
define(function(require) {
'use strict';
var _ = require('underscore'),
Backbone = require('backbone'),
Router = require('router'),
ModuleManager= require('moduleManager');
var App = function App() {
var base = {
router: new Router(),
moduleManager: new ModuleManager(),
start: function start(){
Backbone.history.start({pushState: true});
this.router.navigate('home', {trigger: true});
}
};
return _.extend(
base,
Backbone.events
);
};
return App;
});
应用程序以 开始window.myApp = new App();
,然后myApp.start();
。
内容router.js
如下:
define(function(require) {
'use strict';
var _ = require('underscore'),
Backbone = require('backbone');
var Router = Backbone.Router.extend({
routes: {'home': 'home'},
home: function home() {
// MY ISSUE IS HERE
App.moduleManager.add('moduleName');
}
});
return Router;
});
这moduleManager
是一个效用函数/对象:
App.moduleManager.add('module')
通过需要 require.js 文件(主干视图 + 集合)添加应用程序模块 ,- 做一些检查(例如确保模块不存在),
- 将模块集中存储在
App.moduleManager.modules
除了以下几点之外,一切都运行良好:
我如何App.moduleManager
从内部App.router.home
或任何其他路线 ( App.router.xyz
) 呼叫?
- 在 内
App.router.home
,this
不能引用App
(?) - 在 内
router.js
,我不能打电话App = require('app')
,因为我会在和之间建立循环依赖关系App.js
Router.js
我不确定我是否有全局应用程序结构问题,或者是否只有一个简单的语言结构可以解决这个问题。感谢您的任何帮助,您可以提供。