Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Polymer 克隆聚合物元素的正确方法是什么?_Polymer - Fatal编程技术网

Polymer 克隆聚合物元素的正确方法是什么?

Polymer 克隆聚合物元素的正确方法是什么?,polymer,Polymer,我一直在尝试克隆聚合元素——通常是从某种类型的数据创建的元素,因此不能选择仅使用构造函数或document.createElement创建模板的新实例 element.cloneNode自身不工作,因为它不复制卷影根 lodash提议的似乎没有任何作用(克隆对象为空) cloneEl.shadowRoot.innerHTML=sourceEl.shadowRoot.innerHTML复制阴影根,但似乎丢失了绑定 广泛的例子: 有没有我找不到的Polymer.cloneNode函数?我终于找到

我一直在尝试克隆聚合元素——通常是从某种类型的数据创建的元素,因此不能选择仅使用构造函数或
document.createElement
创建模板的新实例

  • element.cloneNode
    自身不工作,因为它不复制卷影根
  • lodash
    提议的似乎没有任何作用(克隆对象为空)
  • cloneEl.shadowRoot.innerHTML=sourceEl.shadowRoot.innerHTML复制阴影根,但似乎丢失了绑定
广泛的例子:


有没有我找不到的
Polymer.cloneNode
函数?

我终于找到了这个问题的答案(至少对于Polymer 1.0)

演示如何复制属性。 描述如何获取聚合物元素的属性列表

答案是:

newElement = element.cloneNode(true);
for(var i in element.properties) {
            newElement[i] = element[i]
          }
完整的图解和工作示例或在下面的代码片段中


聚合物克隆实例
{{boundvalue}}

聚合物({ 是:“自定义元素”, 特性:{ 边界值:{ 类型:字符串, 值:“输入一些文本…”, 通知:正确 } } }); 1将上述元素克隆到下面的列表中

2将上述元素克隆到下面的列表中,并复制属性

测试描述
  • 修改上面的文本
  • 单击按钮1
  • 注意:下面添加了一个元素,但它被重置为原始文本(“输入一些文本…”)

  • 点击按钮2
  • 注意:下面添加了一个元素,它保留修改后的文本

    还要验证功能是否仍然正常:修改副本中的输入,文本也会更新

    克隆元素列表: 函数cloneElementWithProperties(){ list=document.querySelector(#list elements”); sourceEl=document.querySelector(“源元素”) cloneEl=sourceEl.cloneNode(真); for(sourceEl.properties中的变量i){ cloneEl[i]=sourceEl[i]; } list.insertBefore(cloneEl,null); } 函数cloneElementWithoutProperties(){ list=document.querySelector(#list elements”); sourceEl=document.querySelector(“源元素”) cloneEl=sourceEl.cloneNode(真); list.insertBefore(cloneEl,null); }
    这是我的克隆功能

    var clone=函数(orig){
    var ret=orig.cloneNode();
    轻量化;
    var-childNodes;
    if(orig.is&&orig.is.toUpperCase()==orig.tagName){
    lightDom=聚合物dom(ret);
    childNodes=Polymer.dom(orig.childNodes);
    }否则{
    lightDom=ret;
    childNodes=orig.childNodes;
    }
    对于(var i=0;i
    我发现(至少在1.5中)cloneNode(true)
    创建了两个纸质复选框。有没有想过如何防止聚合物在复选框上两次起作用?我正在寻找一种可以克隆light DOM儿童的解决方案,但这种解决方案对我不起作用。