2015-10-29 56 views
1

使用ES6中的新符号类型,可以设置对象的不可迭代属性。但是,在使用敲除时,默认情况下不会观察到这些符号。可以进行基因敲除以观察ES6符号吗?

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

有没有人能够解决这个问题,并强制敲除观察符号?

+2

在你需要的符号只能定义非枚举的属性的情况下:可以也可以通过'defineProperty'和'enumerable:false'描述符来设置它们。 – nils

+0

您可以展示ES6代码,以及您如何进行绑定? – JotaBe

+0

你的意思是不可枚举的属性? – CrimsonChris

回答

2

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

observable.defineProperty不接受enumerable作为参数,但它确实有configuration: true。这意味着我们可以使用observable.defineProperty(这将使得物业枚举),但随后立即作出财产不可枚举的,像这样......

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