Использование наблюдателей изменений для наблюдения за собственными свойствами в Object.observe()
Теперь, когда Object.observe()
по умолчанию включен в Chrome, я сталкиваюсь с множеством случаев, когда я хочу повторно использовать встроенное свойство браузера (hidden
, title
, draggable
), но *Changed
наблюдатели больше не будут вызываться при изменении свойства.
Одним из примеров является hidden
: http://jsbin.com/jizikaje/1/edit (hiddenChanged()
никогда не называется)
Мой текущий обходной путь должен использовать attributeChanged()
наблюдать изменение атрибута:
attributeChanged: function(attrName, oldVal, newVal) {
// Cannot use *Changed watchers for these native properties.
if (attrName == 'hidden') {
this.marker.setVisible(!this.hidden);
}
}
Какой рекомендуемый подход?
Кстати, предупреждение при попытке использовать нативные свойства потребует много времени для отладки: https://github.com/Polymer/polymer/issues/379
2 ответа
Object.observe()
для JavaScript, и MutationObserver
для элементов DOM. MutationObserver, вероятно, будет работать лучше в этом случае.
Похоже, что это старый пост для Polymer 1 и, вероятно, больше не является полезным вопросом.
Предложение Object.observe() было отозвано и не поддерживается ни одним браузером.
Polymer теперь использует объявленные свойства, которые поддерживают наблюдателей.