2
我試圖做一個關於observeNodes
聚合物設施的簡單測試。本質上,我的代碼定義了組件上的子節點更改的觀察者。聚合物觀察節點不起作用
<dom-module id="wc-A">
<template>
<div>Added Nodes : <span id="added"></span></div>
<div>Removed Nodes : <span id="removed"></span></div>
</template>
<script>
Polymer ({
is: 'wc-A',
ready: function() {
Polymer
.dom (this)
.observeNodes (function (nodes) {
console.log (nodes)
this.$.added.textContent = nodes.addedNodes.length;
this.$.removed.textContent = nodes.removedNodes.length;
});
}
});
</script>
</dom-module>
這個例子上正常工作創建時間(從我的測試span#added
含5-8 span#removed
包含0),但是當我以編程方式添加/刪除上的光span
的元素DOM,觀察機制不響應(不要換)。這是我的測試:
<div>
<button id="btnAdd">New</button>
<button id="btnRemove">Remove</button>
</div>
<wc-A> <!-- (1) Fires observer -->
<div class="data">1</div>
<div class="data">2</div>
</wc-A>
<template id=template>
<div class="data">3</div>
</template>
<script>
HTMLImports.whenReady (function() {
document
.querySelector ('#btnAdd')
.addEventListener ('click', function (e) {
var template = document.querySelector ('#template').content;
var div = template.querySelector ('div');
var wcA = document.querySelector ('wc-A')
wcA.appendChild (div.cloneNode (true)); // (2) Does not fire observer
});
document
.querySelector ('#btnRemove')
.addEventListener ('click', function (e) {
var wcA = document.querySelector ('wc-A')
var child = wcA.querySelector ('.data');
if (child)
wcA.removeChild (// (3) Does not fire observer
child
);
});
});
</script>
完整的代碼可以檢查http://plnkr.co/edit/DHiH40T3pBLx9Nu6Tv3W?p=preview
什麼是我的錯誤?提前致謝。
猜你有這個網頁已經打開:https://www.polymer-project.org /1.0/docs/devguide/local-dom.html#observe-nodes 我試着對你的plunker做一些快速的修改,添加了一個'content'標籤,但是這也沒有幫助,但是看到div加入了隨着這一變化。 似乎有點類似於這個問題:http://stackoverflow.com/questions/34286381/observenodes-for-distributed-content 這就是說,我有一個元素,但我沒有爲我工作的observenodes以編程方式添加孩子,但是依靠'dom-if',也許他們是如何添加的? #askpolymer – Bulan