【发布时间】:2017-05-26 05:41:39
【问题描述】:
我正在使用带有 knockout.js 的 typescript。对于一种情况,我的班级需要不可变字段。该字段应该是可观察的。
我已经创建了
readonly _isDirty = ko.observable<boolean>(false);
在构造函数中赋值
constructor(data: ITypedInput, isDirty: any) {
super(ko.unwrap(data));
this._isDirty = isDirty;
}
但是当我想设置另一个值时
this._isDirty(true);
TypeScript 编译器没有说什么,这是不允许的。 在另一种情况下,当我只是设置值时
this._isDirty = true;
编译器说
赋值表达式的左侧不能是常量或只读属性。
那么有什么办法可以让 readonly observable?
谢谢。
【问题讨论】:
-
创建一个没有
write回调的computedObservable会解决您的目的吗?因为正如 Nitzan 所提到的,observable只是一个function,它通过参数调用以更新其值,而要读取当前值,您只需在不带参数的情况下调用它` -
拥有一个
readonlyobservable 有点自相矛盾......创建一个 observable 背后的要点是您可以更改它并且自动更新。如果你不想改变它,你还不如使用“just”一个readonly布尔值:当你applyBindings时,普通值可以很好地工作。
标签: javascript typescript knockout.js observable readonly