在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有关“原生”属性的更改?这是一个已知的问题?这可以解决吗?
答案 0 :(得分:2)
团队建议人们不要定义与本机DOM属性/属性同名的属性/属性。 link
避免使用与本机DOM属性或方法相同的名称定义属性或方法,例如id,children,focus,title和hidden;结果是不可预测的。
这是因为Object.observe
实际上无法观察到这些属性。它们来自浏览器内的C ++黑盒子。
我的建议是使用language
代替lang
。
答案 1 :(得分:0)
我似乎无法重现这一点。您使用的浏览器是什么?
http://jsfiddle.net/6sqo159z/16/
当我广泛使用Polymer时,我遇到了一些类似的问题。即在IE上。
您使用的是最新版本的聚合物和平台吗? 尝试给出属性默认值,即使这些值未定义。 尝试为您的属性添加发布对象。
publish:{
bar:"",
lang:""
}