属性观察器从不触发 "native" 属性?
Attribute watchers never fire on "native" attributes?
在 Polymer (0.5.2) 中,似乎无法清楚地观察到全局 HTML 属性,例如 lang
?例如:
<polymer-element name="x-foo" attributes="lang bar">
..
<script>
Polymer({
langChanged: function () .. // never fires by itself
barChanged: function () .. // fires just fine
});
</script>
</polymer-element>
有趣的是,如果元素以其他方式变脏,回调确实会触发。例如:
..
ready: function () {
this.lang = 'en';
}
..
这不会触发任何回调。然而:
..
ready: function () {
this.lang = 'en';
this.bar = 'baz';
}
..
这会触发两个回调。所以看起来 Polymer 没有正确地收到有关 "native" 属性更改的通知?这是一个已知的问题?这可以解决吗?
我似乎无法重新创建它。您使用的是什么浏览器?
http://jsfiddle.net/6sqo159z/16/
我在广泛使用 Polymer 时遇到了一些类似的问题。即在 IE 上。
您使用的是最新版本的 Polymer 和平台吗?
尝试为您的属性提供默认值,即使这些值未定义。
尝试为您的属性包含一个发布对象。
publish:{
bar:"",
lang:""
}
团队建议人们不要定义与原生 DOM properties/attributes 同名的 properties/attributes。 link
Avoid defining a property or method with the same name as a native DOM property or method, such as id, children, focus, title and hidden; the results are unpredictable.
这是因为 Object.observe
无法实际观察到这些属性。它们来自浏览器中的 C++ 黑匣子。
我的建议是使用 language
而不是 lang
。
在 Polymer (0.5.2) 中,似乎无法清楚地观察到全局 HTML 属性,例如 lang
?例如:
<polymer-element name="x-foo" attributes="lang bar">
..
<script>
Polymer({
langChanged: function () .. // never fires by itself
barChanged: function () .. // fires just fine
});
</script>
</polymer-element>
有趣的是,如果元素以其他方式变脏,回调确实会触发。例如:
..
ready: function () {
this.lang = 'en';
}
..
这不会触发任何回调。然而:
..
ready: function () {
this.lang = 'en';
this.bar = 'baz';
}
..
这会触发两个回调。所以看起来 Polymer 没有正确地收到有关 "native" 属性更改的通知?这是一个已知的问题?这可以解决吗?
我似乎无法重新创建它。您使用的是什么浏览器?
http://jsfiddle.net/6sqo159z/16/
我在广泛使用 Polymer 时遇到了一些类似的问题。即在 IE 上。
您使用的是最新版本的 Polymer 和平台吗? 尝试为您的属性提供默认值,即使这些值未定义。 尝试为您的属性包含一个发布对象。
publish:{
bar:"",
lang:""
}
团队建议人们不要定义与原生 DOM properties/attributes 同名的 properties/attributes。 link
Avoid defining a property or method with the same name as a native DOM property or method, such as id, children, focus, title and hidden; the results are unpredictable.
这是因为 Object.observe
无法实际观察到这些属性。它们来自浏览器中的 C++ 黑匣子。
我的建议是使用 language
而不是 lang
。