不是100%我明白你的意思,但是使用一個簡單的測試發現attributeChanged
事件在attached
之後和domReady
之前調用。但是,從ready
開始,屬性值已經可讀。這很容易理解,因爲attributeChanged
事件是通過javascript回調函數調用的,這同樣適用於domReady
事件,但它們不會在代碼已經運行時立即觸發。
如果您在created
事件中設置了值,它將以任何方式反映(當然除了您指定它的函數本身之外)將會反映而不是。屬性處理後created
事件,但之前ready
事件。
如果你想看到自己這一點:
<my-element myAttribute="attributeValue"></my-element>
和本身被定義爲
<polymer-element name="my-element" attributes="myAttribute">
<template>
<span>Hello from <b>my-element</b>. This is my Shadow DOM.</span>
</template>
<script>
Polymer({
created: function() {
//has no effect on the element:
//this.myAttribute = "newValue";
console.log("created", this.myAttribute);
},
ready: function() {
//works fine:
//this.myAttribute = "newValue";
console.log("ready", this.myAttribute);
},
attached: function() {
console.log("attached", this.myAttribute);
},
domReady: function() {
console.log("domReady", this.myAttribute);
},
myAttributeChanged: function() {
console.log("myAttributeChanged", this.myAttribute);
}
});
</script>
</polymer-element>
一個簡單的測試,可以判斷你的答案的元素,但我猜想,一個硬編碼值(不像dom-set值)在技術上沒有改變,直到它被改變。 – dandavis