對於問題1:這是ready事件之前的元素的最有可能的副本,這就是爲什麼它是不確定的。大多數情況下,您應該使用Polymer DOM API在DOM中進行操作。主機對象應提供:Polymer.dom(this).getOwnerRoot().host
對於問題2:使用Polymer Data Binding這樣的工作你想要達到什麼目的。您仍然可以在父元素中使用this.policies
,但數據活頁夾會將信息提供給子元素,並且所有內容都將進行同步和處理。
對於數據綁定,屬性添加到您的x-comphost
和x-child
元素:
properties: {
data: {
type: Object,
value: null, // Default Value
// Fire value-changed Event when changed
// so the elements and the data binding
// will react to that.
notify: true
// (optional) Listener for the property changing
// if your want to make custom logic
observer: '_doSomething'
}
}
而且在themplate添加的屬性是這樣的:<x-child data="{{data}}"></x-child>
隨着越來越多的元素,你可以做一個Behavior其能包含財產和觀察員的詳細信息,你不需要複製粘貼到每個元素,但你可以覆蓋,如果你想:
var MyDataBehavior = {
properties: {
data: {type:Object, notify:true, observer: '_dataChanged'}
},
dataChanged: function(data) { /* ... */ }
};
當你添加的行爲輸入,則只需將其添加到您的元素定義:
//...
behaviors: [MyDataBehavior],
//...
影子DOM類似於一個封閉的城堡,你不能進入或從內離開,你必須建立橋樑,讓人民並出去。
莫妮卡·丁庫勒斯庫(從谷歌聚合物隊):
使橋代小龍進入暗影DOM城堡!
Ultimatley您可以將您的數據到全球範圍,可以達到它,因爲窗口對象是共享的,而不是某種原始的一個副本。
我更新了我的答案,以更詳細地回答您的兩個問題。 – adaliszk