首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何dom-repeat槽内容

如何dom-repeat槽内容
EN

Stack Overflow用户
提问于 2018-05-07 18:43:10
回答 2查看 927关注 0票数 2

我正在尝试创建一个可重用的列表,它将其行模板作为一个槽传递进来,但是槽的内容只重复一次。示例如下:https://codepen.io/chris-gunawardena/project/editor/XkPYQw

代码语言:javascript
复制
<script src="https://polygit.org/components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="https://polygit.org/components/paper-button/paper-button.html">
<dom-module id="list-repeater">
  <template>
      <template is="dom-repeat" items="{{items}}" as="item">
        <li>
          # [[index]]:  [[item]] <slot name="row-template"></slot>
        </li>
    </template>
  </template>
  <script>
    class ListRepeater extends Polymer.Element {
      static get is() {
        return 'list-repeater';
      }
      static get properties() {
        return {
          items: Array,
        };
      }
    }
    customElements.define(ListRepeater.is, ListRepeater);
  </script>
</dom-module>

它的用法如下:

代码语言:javascript
复制
  <list-repeater items='["a","b"]'>
    <div slot="row-template">--slot content--</div>
  </list-repeater>

该功能类似于接受模板的iron-list,但很难理解iron-list正在做的事情。

EN

回答 2

Stack Overflow用户

发布于 2018-05-07 19:02:08

使用插槽在您的情况下将不起作用,iron-list正在使用Templatizer Behavior来实现这一点

Polymer.Templatizer行为添加了生成模板实例的方法,每个模板实例都由一个匿名Polymer.PropertyEffects实例管理,其中标记的模板内容中的数据绑定绑定到自身上的访问器。

票数 1
EN

Stack Overflow用户

发布于 2020-02-17 13:01:04

我也遇到了同样的问题,我得到了一个解决方案,你可以尝试一下,让我知道这是否适用于你。这种方法使用了模板化工具。

HTML:

代码语言:javascript
复制
<div id="you-component-list"><your-component></you-component><div>

JS:

在附加方法中添加以下行:

代码语言:javascript
复制
attached() {
this.templatize(/** @type {!HTMLTemplateElement} **/ (
    this.$.'your-component-list'.querySelector('template')));},

const /** !Array */ flattenedNodes = Polymer.FlattenedNodesObserver.getFlattenedNodes(this); const distributedNodeToAppend = /** !Node */ flattenedNodes.find( (/** !Node */ node) => (node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('slot'))); const clone = this.stamp({item: item}); if (distributedNodeToAppend) { const childNode = distributedNodeToAppend.cloneNode(true); childNode.removeAttribute('slot'); clone.root.querySelector('Your-component').appendChild(childNode); } Polymer.dom(this.$.'you-component-list').appendChild(clone.root);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50212313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档