当我们的元素层次结构覆盖了父函数时,有时会遇到“超出最大堆栈大小”的情况。最近,我注意到错误在以下情况下逐渐蔓延:

<polymer-element name="element-a" noscript></polymer-element>

<polymer-element name="element-b" extends="element-a">
  <script>
    Polymer('element-b', {
      attached: function () { this.super(); }
    });
  </script>
</polymer-element>

<polymer-element name="element-c" extends="element-b">
  <script>
    Polymer('element-c', {
      attached: function () {this.super();  }
    });
  </script>
</polymer-element>


http://jsbin.com/guqeyome/2/edit

我的想法是,如果元素A没有“附加”功能,则元素C中的超级调用最终将什么也不会调用。取而代之的是,它调用元素B的“ attached”函数,从而引发了无限递归的情况。解决方案是在元素A中具有一个空的“附加”功能。

这是设计使然吗?难道我做错了什么?是虫子吗?

最佳答案

该问题的“答案”:


现在,请确保每当元素调用super时都存在一个超级函数。
该问题已通过https://github.com/Polymer/polymer/issues/476在上游修复。

09-25 16:44
查看更多