2015-10-29 5 views
1

Используя новый тип символа в ES6, вы можете установить неистребимые свойства объектов. Однако при использовании Knockout эти символы не соблюдаются по умолчанию.Можно ли выполнить нокаут, чтобы наблюдать символы 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 });