使用Polymer Templatizer标记模板

时间:2019-04-01 13:35:30

标签: javascript polymer-1.0

我想在需要时添加模板的内容,并在不需要时将其删除。我的代码基于聚合物的dom-if实现

这是添加模板内容的代码

if (!this.ctor) {
  this.templatize(this);
}  
if (parentNode) {
  const parent = Polymer.dom(parentNode);
  if (!this._instance) {
    this._instance = this.stamp();
    const targetNode = parent.firstElementChild;
    const newNode = this._instance.root;
    parent.insertBefore(newNode, targetNode);
  } else {
    const children = this._instance._children;
    if (children && children.length) {
      const lastChild = Polymer.dom(this).previousSibling;
      if (lastChild !== children[children.length - 1]) {
        for (let i = 0, node; i < children.length && (node = children[i]); i++) {
          parent.insertBefore(node, this);
        }
      }
    }
  }
}

这是删除模板内容的代码:

if (this._instance) {
  const children = this._instance._children;
  if (children && children.length) {
    const parent = Polymer.dom(Polymer.dom(children[0]).parentNode);
    for (let i = 0, n; i < children.length && (n = children[i]); i++) {
      parent.removeChild(n);
    }
  }
  if(this.restamp) {
    this._instance = null;
  }
}

因此,如果我将restamp属性设置为true,则一切正常。但是,如果我将其设置为false,则不会显示某些内容。

dom重复模板的内容不会插入上面的代码中

parent.insertBefore(node, this);

因为节点仅包含#document-fragments,但不包含由dom-repeat插入的内容。

我尝试达到正确的内容,但失败了。即使包含dom-repeat,dom-if等内容,也可以插入正确的内容吗?

谢谢

0 个答案:

没有答案