構築中のアプリケーションに RequireJS で BackboneJS を使用しています。
App
ファイルはルーターを初期化します:
// Define application router
var router = new AppRouter();
Backbone.history.start();
次に、ルーターがシステム アクションを制御します。
var App = Backbone.Router.extend({
routes: {
"project/:id": "getProject",
"projects": "getProjects",
"*actions": "defaultRoute"
},
getProject: function (id) {
// dashboard.set('some_key', 'some_value');
},
getProjects: function () {
// dashboard.set('some_key', 'some_value');
},
defaultRoute: function () {
// dashboard.set('some_key', 'some_value');
}
});
Dashboard
システムの状態に関するグローバルな情報をいつでも表示するために使用するモデルとビューを追加しました。(これはウィンドウの上部に配置されます)。そのビューは、モデルの値の変更を監視し、必要に応じて再レンダリングします。これはうまくいきます。
最初のオブジェクトのインスタンス化の後、これを書き直す必要はありません。
var dashboard = new DashboardModel();
var dashboardView = new DashboardView({ model: dashboard });
$('#dashboard-placeholder').html(dashboardView.render().el);
ただし、必要なのは、このオブジェクトにどこからでもアクセスできることです (Dashboard
モデルのインスタンス)。現時点では初期化してApp
いますが、これを行うとルーターでアクセスできません。ルーターが実行する適切なタスクとは思えないため、ルーターで定義したくありません。
Dashboard
モデルのこのインスタンスをどこで、どのように定義すればよいですか?