已经有this question和this question,但尽管这两个问题都触发相同的错误,但它们的解决方案和原因并不相同。我有一个标签在应用程序的整个生命周期内异步加载内容。该内容反过来包含导致错误的自定义元素。下面是最简单的测试案例重现此错误(假设聚合物里设置了凉亭,否则进口会显得略有不同):异步插入包含自定义元素的内容
base.html文件
<link rel="import" href="bower_components/polymer/polymer.html">
<link href="asynchronousTag.html" rel="import">
<asynchronous-tag></asynchronous-tag>
asynchronousTag.html
<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/core-tooltip/core-tooltip.html">
<polymer-element name="asynchronous-tag">
<template>
<div id="text"></div>
</template>
<script>
Polymer({
ready:function(){
var that = this;
setTimeout(function(){
that.$.text.innerHTML =
'<core-tooltip label="testing">tester</core-tooltip>';
}, 2500);
}
});
</script>
</polymer-element>
触发错误
核心工具提示上的属性是聚合物升级元素之前的数据绑定。这可能会导致不正确的绑定类型。
尽管按预期工作。当<core-tooltip>
属性较少时也会发生同样的情况。然而,这确实不插入使用相同的节点时发生
var ct = document.createElement("core-tooltip");
ct.innerHTML = "html";
ct.setAttribute("label","text");
that.$.text.appendChild(ct);
然而这可悲的是没有帮助我的一切,就像我的内容是一个完整的HTML字符串。
我关心这个问题的原因是所讨论的函数的性能不及格,所以我希望解决导致错误的问题可能会改善这一点(除了我更喜欢在控制台上不显示任何错误)。
那个线程真的很老。使用innerHTML时会调用生命周期事件:http://jsbin.com/haxaha/1/edit。我认为在这种情况下,警告“核心工具提示上的属性是聚合物升级元素之前的数据绑定”并不有用。 – ebidel 2014-10-11 17:11:56
@ebidel ......我所知道的是,它解决了问题,说实话,我现在只在Polymer工作了两天,所以我才开始了解底层技术。如果你可以给出一个解释为什么这个问题的其他解释,请回答,我会删除这个答案。 – 2014-10-11 22:14:02
提交https://github.com/Polymer/polymer/issues/795 – ebidel 2014-10-12 01:44:11