私は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
グローバルなアプリケーション構造の問題があるのか、それともこの問題を回避できる単純な言語構造があるのかはわかりません。あなたが提供できるどんな助けにも感謝します。