Nun, da Object.observe()
standardmäßig in Chrome auf, ich bin in ein paar Fällen laufen, wo ich den Browser in Immobilien gebaut wiederverwendet werden soll (hidden
, title
, draggable
), aber *Changed
Beobachter werden nicht mehr aufgerufen, wenn sich die Eigenschaft ändert.Mit Änderung Beobachter beobachten nativen Eigenschaften unter Object.observe()
Ein Beispiel dafür ist hidden
: http://jsbin.com/jizikaje/1/edit (hiddenChanged()
heißt nie)
Meine aktuelle Problemumgehung ist attributeChanged()
zu verwenden, das Attribut zu beobachten, zu ändern:
attributeChanged: function(attrName, oldVal, newVal) {
// Cannot use *Changed watchers for these native properties.
if (attrName == 'hidden') {
this.marker.setVisible(!this.hidden);
}
}
Was ist der empfohlene Ansatz?
BTW, werfen eine Warnung, wenn native Eigenschaften verwenden versuchen, wird eine lange für die Fehlersuche gehen: https://github.com/Polymer/polymer/issues/379
Die 'alert()' scheint für mich in Chrome 34 passiert. Vielleicht wurde das behoben? – jokeyrhyme
Chrome 34 verfügt nicht über Object.observe(). Es verwendet schmutzige Überprüfung. – ebidel
Ah ja, das macht Sinn. Das DOM wurde noch nicht in V8 verschoben, daher funktioniert Object.observe() wahrscheinlich nicht mit DOM-Elementen. – jokeyrhyme