Использование наблюдателей изменений для наблюдения за собственными свойствами в 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 теперь использует объявленные свойства, которые поддерживают наблюдателей.

Другие вопросы по тегам