聚合物不能正确地解开

时间:2016-03-24 14:50:05

标签: templates polymer polymer-1.0

listeners grow

我使用Polymer.Templatizer将paper-input个集合的模板标记为custom-element,其中有一个监听器'change':'_doStuff'。 基本上,当我通过paper-input标记20 Polymer.dom(this).appendChild(template.root)时,会添加一堆听众,如图所示。 然后我调用另一个遍历所有元素的函数并执行Polymer.dom(paperInput.parentNode).removeChild(paperInput)并添加另一组输入。但它只是因为某些原因而没有将听众分离出去,并且每次迭代都会增加堆... 我相信主机元素上的监听器change既不是分离的。

我做错了什么?

编辑:我知道它是什么,它不是垃圾收集问题,但是聚合物在模板化时会创建匿名的Polymer.Base实例,并且实际上将所有模板的子项放入其中。当然,实例不会以任何方式删除。我希望我知道如何杀死那些不降低应用程序性能的人。通过定义自定义元素?对我而言似乎是一种开销...

1 个答案:

答案 0 :(得分:0)

释放内存的一种方法可能是在分离元素之前取消所有侦听器的侦听,以便首先取消引用它们。例如:

for (var i = 0; i < inputList.length; i++) {
  this.unlisten(inputList[i], 'change', 'doStuff');
  Polymer.dom(inputList[i].parentNode).removeChild(inputList[i]);
}