3

拡張機能の Backbonejs の実装を見ると、それは基本的なプロトタイプ拡張ではなく、バックボーン拡張が直接 TypeScript クラスに変換されると、いくつかの機能が停止することがわかります。Backbonejs (モデル、コレクション、ルート、ビュー、履歴) の各コンポーネントを typescript クラスに変換し、何も壊れていないことを確認する正しい方法は何ですか?

ありがとう!

更新:この Q/A の回答は、他のバックボーン コンストラクトでも機能します。

4

1 に答える 1

1

これは、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();

サンプルコードのダウンロードはこちら

于 2013-02-02T02:23:26.187 に答える