require.js を使用してバックボーン ビュー/モデルのインスタンスを渡すと、すぐに人生が非常に不幸になります。モジュールがビュー/モデルの定義のみを返すようにする方がはるかに簡単です。そうすれば、それらすべてを同じスコープ内でインスタンス化できます。
したがって、ビュー モジュールが定義だけを返すようにすると、次のようになります。
// IndexView module
define(['dep1', 'dep2'], function (dep1, dep2) {
var IndexView = Backbone.View.extend({
...
});
return IndexView;
});
次に、ルーター内でインスタンス化できます。
// our main requirejs function
requirejs(['path/to/indexview'], function (IndexView) {
var AppRouter = Backbone.Router.extend({
initialize: function () {
// bind our IndexView to the router
this.IndexView = new IndexView();
}
});
// start the app
var app = new AppRouter();
});
そうすれば、コードは依然として Require.js でモジュール化されますが、 を使用してルーターのスコープを渡すことができますthis
。