我有一个应该跟踪其子节点中的信息的主机组件。子节点是使用 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]
to更改时,[c,d]
它将重用两个现有节点,因此不会调用 _nodesChanged。
主机组件知道回收的子节点何时更新的好方法是什么?宿主组件应该能够在不知道子组件内部工作原理的情况下这样做(封装原则)。