拡張機能の Backbonejs の実装を見ると、それは基本的なプロトタイプ拡張ではなく、バックボーン拡張が直接 TypeScript クラスに変換されると、いくつかの機能が停止することがわかります。Backbonejs (モデル、コレクション、ルート、ビュー、履歴) の各コンポーネントを typescript クラスに変換し、何も壊れていないことを確認する正しい方法は何ですか?
ありがとう!
更新:この Q/A の回答は、他のバックボーン コンストラクトでも機能します。
これは、TypeScript によって生成されたコードが最初に Router コンストラクターを呼び出し、次にルートを宣言するためです。
TypeScript コンパイラによって生成されたコード
...
function AppRouter() {
_super.apply(this, arguments);
this.routes = { // <= routes defined after _super constructor
"*actions": "defaultRoute"
};
}
...
これを修正する_bindRoutes()
には、TypeScript オブジェクト コンストラクターで Backbone Router 関数を呼び出すだけです。
例:
class AppRouter extends Backbone.Router {
routes = {
"*actions": "defaultRoute"
}
constructor(){
super();
// call _bindRoutes() here function to bind your routes
(<any>this)._bindRoutes();
}
defaultRoute() {
document.write("Default Route Invoked");
}
}
var app_router = new AppRouter();
Backbone.history.start();
サンプルコードのダウンロードはこちら