Emberjs和TypeScript - 计算属性

时间:2014-07-08 11:33:12

标签: javascript ember.js typescript

我目前正在尝试开发一些EmberJs + TypeScript原型。我正在使用这个tutorial,我坚持这个point。我应该如何在TypeScript中创建计算属性?

我尝试过类似的东西,但它不起作用:

module App {
export class TodoController extends Em.ObjectController {

    constructor() {
        super();
    }

    public isCompleted = ((key, value) => {
        var model = this.get('model');
        if (value === undefined) {
            // property being used as a getter
            return model.get('isCompleted');
        } else {
            // property being used as a setter
            model.set('isCompleted', value);
            //model.save();
            return value;
        }
    }).property('model.isCompleted');
}
}

1 个答案:

答案 0 :(得分:1)

您不能使用typescript类语法来扩展Ember类。您必须像在普通Javascript中一样使用extend方法。原因在于Ember不仅仅扩展了类的原型(正如您从计算属性中看到的那样无效)。

如果你真的想使用类语法,我建议使用为Ember构建的EmberScriptSweetJS来构建一个宏来实现它。不幸的是,两种方法都不适用于Typescript。

或者,如果您感觉特别聪明,可以修改Typescript生成的__extends方法,并可能实现您想要的方式。

但是对于一些语法糖而言似乎都有点过分。只需使用Ember提供的extend方法。

相关问题