将Backbone结构转换为TypeScript

时间:2013-01-31 18:32:54

标签: backbone.js typescript

看看Backbonejs对extend function的实现,它表明它不是一个基本的原型扩展,当主干扩展直接转换为TypeScript类时,有些东西会停止运行。将Backbonejs(模型,集合,路由,视图,历史)的每个组件转换为typescript类并确保没有任何内容被破坏的正确方法是什么?

谢谢!

更新 this Q/A中的答案也适用于其他骨干构造。

1 个答案:

答案 0 :(得分:1)

这是因为TypeScript生成的代码首先调用Router构造函数然后声明路由。

由TypeScript编译器生成的代码

...
function AppRouter() {
    _super.apply(this, arguments);

    this.routes = { // <= routes defined after _super constructor
        "*actions": "defaultRoute"
    };
}
...

要解决此问题,只需在TypeScript对象构造函数上调用Backbone Router函数_bindRoutes()

示例:

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();

下载示例代码here