享受我的公共属性现在默认可观察的事实。我从文档中看到你使用
创建了一个计算器observable.defineProperty(viewModel, 'fullName', function(){
return this.firstName + ' ' + this.lastName;
});
要在打字稿中这样做(如果Rob有更好的方法,请纠正我),我去:
import obs = require('plugins/observable');
class Upload {
public enableUpload: boolean = false;
constructor() {
obs.defineProperty(this, 'enableUpload', {
read: () => {
var result = this.fileExists && this.createAs;
return result;
}
});
}
我唯一不喜欢的是该属性作为字符串传递给defineProperty函数。任何方式?
干杯
杰里米
答案 0 :(得分:1)
我认为您使用Durandal API?
documentation表示属性名称是字符串。
observable.defineProperty
使用ES5 getter和setter定义计算属性。参数
- obj:Object要在其上创建属性的目标对象。
- propertyName:String 要定义的属性的名称。
- evaluatorOrOptions:Function | object Knockout计算函数或计算选项对象。
返回KnockoutObservable:基础计算的observable。
答案 1 :(得分:1)
得到答案(感谢Rob Eisenberg):
从v2.1开始,Durandal observable插件将包含getter。因此,除了上面的代码,我可以使用
获得打字稿的全部好处get enableUpload(): boolean {
return this.fileExists && this.createAs != null;;
}
和Durandal使它成为一个计算可观察的。