我有一个主机组件,应该跟踪其子节点中的信息。子节点使用dom-repeat创建:
<!--host-->
<dom-repeat items="[[data]]">
<div>...</div>
<dom-repeat>
我可以跟踪dom-repeat添加或删除的节点:
//host
attached: function(){
this_observer = Polymer.dom(this).observeNodes(this._nodesChanged);
}
_nodesChanged: function(info){
// handle info.addedNodes, info.removedNodes
}
但是,当items
更改时,dom-repeat会回收现有节点。因此,例如,当data
从[a,b]
更改为[c,d]
时,它将重用两个现有节点,因此不会调用_nodesChanged。
什么是主机组件知道何时更新回收子节点的好方法?主机组件应该能够在不知道子组件的内部工作原理的情况下这样做(封装原则)。