7

现在Object.observe()在 Chrome 中默认启用,我遇到了一堆我想重用浏览器的内置属性 ( hidden, title, draggable) 的情况,但是*Changed当属性更改时不再调用观察者。

一个例子是hidden:http: //jsbin.com/jizikaje/1/edithiddenChanged()从不调用)

我目前的解决方法是用来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

4

2 回答 2

0

Object.observe()适用于 JavaScript 内容,MutationObserver适用于 DOM 元素。在这种情况下,MutationObserver 可能会更好。

于 2014-06-08T00:27:21.270 回答
0

看起来这是 Polymer 1 的旧帖子,可能不再是一个有用的问题。

Object.observe() 提案已被撤回任何浏览器都不支持

Polymer 现在使用支持观察者的声明属性

于 2016-12-27T19:07:44.147 回答