Javascript 在自定义元素中使用聚合阴影dom的问题
我正在尝试创建一个自定义的聚合物元素。它需要向div容器添加一个新标记 以下是一个例子:Javascript 在自定义元素中使用聚合阴影dom的问题,javascript,polymer,polymer-1.0,Javascript,Polymer,Polymer 1.0,我正在尝试创建一个自定义的聚合物元素。它需要向div容器添加一个新标记 以下是一个例子: <dom-module id="my-element"> <template> <div id="container"></div> </template> <script> Polymer({ is: 'my-element', someHandler: function() {
<dom-module id="my-element">
<template>
<div id="container"></div>
</template>
<script>
Polymer({
is: 'my-element',
someHandler: function() {
var el = document.createElement('span');
this.$.container.appendChild(el);
}
});
</script>
</dom-module>
聚合物({
是‘我的元素’,
someHandler:function(){
var el=document.createElement('span');
这个$.container.appendChild(el);
}
});
但是,如果我将此元素添加到布局中两次,并在第二个元素上调用
someHandler()
,它将向第一个元素添加span。发生了什么?如何修复它?要使用JavaScript操作节点,必须使用Polymer的API。下面是报告的内容:
注意:所有DOM操作都必须使用此API,而不是直接在节点上使用DOM API
在代码中,要添加子节点,应编写:
Polymer.dom(this.$.container).appendChild(el);
我认为这也是出于性能原因,但正如您所见,它似乎也与Polymer如何管理其节点有关。要使用JavaScript操作节点,必须使用Polymer的API。下面是报告的内容: 注意:所有DOM操作都必须使用此API,而不是直接在节点上使用DOM API 在代码中,要添加子节点,应编写:
Polymer.dom(this.$.container).appendChild(el);
我认为这也是出于性能原因,但正如您所看到的,它似乎也与Polymer如何管理其节点有关。@Supersharp好的,删除了那些标记。我认为您应该使用
Polymer.dom(this.$.container)。appendChild(el)
instead@TomaszPluskiewicz伟大的成功了!非常感谢你!很高兴我能帮忙。我加了这个作为一个例子answer@Supersharp好的,删除了那些标记。我认为您应该使用Polymer.dom(这个.$.container).appendChild(el)
instead@TomaszPluskiewicz伟大的成功了!非常感谢你!很高兴我能帮忙。我加上这个作为回答