可以敲除观察ES6符号吗?

时间:2015-10-29 11:41:21

标签: javascript knockout.js ecmascript-6 durandal-2.0

使用 ES6 中的新符号类型,您可以在对象上设置不可迭代的属性。但是,使用 Knockout 时,默认情况下不会观察到这些符号。

可以绑定符号的值,但它永远不会更新,因为它没有添加到可观察对象中。

是否有人能够解决此问题并强制淘汰赛来观察符号?

1 个答案:

答案 0 :(得分:2)

看起来Durandal的observable插件与Knockout-ES5插件的实现方式类似。当应用于视图模型时,它只会创建包含在getter / setter中的observable,以获取对象上可枚举的属性。

observable.defineProperty不接受enumerable作为参数,但确实有configuration: true。这意味着我们可以使用observable.defineProperty(这将使属性可枚举),但随后立即使属性不可枚举...

Object.defineProperty(this, 'myProp', { enumerable: false });