嵌套dom-repeat

时间:2015-10-01 23:05:19

标签: polymer-1.0

例如,我有一个像这样的dom-repeat:

<template is="dom-repeat" id="rows" items="[[rows]]" as="row">
  <tr class="result-tb-row" closed$=[[row.closed]]>
    <td class="result-tb-data">
      <ul class="violation-list">
        <template id="rowItem" is="dom-repeat" items="[[row.items]]">
          <li on-click="click">[[item]]</li>
        </template>
      <ul>
    </td>
  </tr>
</template>

如果我想知道我点击哪一行,我可以写下这样的内容:

this.$.rows.itemForElement(event.target);

但是,如果我想获得与我点击的li对应的确切项目,该怎么办?我该怎么办?我显然无法做this.$.rowItem.itemForElement(event.target),因为rowItem并不是唯一的。

更新

event.model.item似乎解决了这个特殊问题。但是如果你有双嵌套dom-repeat或更多,并且你想要获得中间层,那么你运气不好。可能必须自己实现一个迭代器。双嵌套dom-repeat在表中发生了很多。表已经是嵌套的dom-repeat;如果你想在表格单元格中进行dom-repeat(并且你会遇到它),则会发生双嵌套dom-repeat。

实现迭代器并不困难,只希望Polymer团队支持更多嵌套dom-repeat方法,因为这是一个很棒的功能。

3 个答案:

答案 0 :(得分:4)

event.target包含<li>引用。

当您执行this.$.rowItem.itemForElement(event.target)时,名为dom-repeat的{​​{1}}是唯一的,它会查看哪个项目属于rowItem

但是如果您只想要商品数据,则可以使用<li>,其中包含对您所点击的商品数据的引用。

答案 1 :(得分:1)

这是一个非常有效的问题,我面临同样的情况。有人有解决方案吗?

<强>更新

我在e.model.__data__找到了ID。但这感觉就像一个黑客

答案 2 :(得分:1)

在这里。我花了几个应用来解决这个问题。

Polymer将内部ID视为动态创建的ID。因此,使用Polymer的动态ID 的自动节点查找,您可以说:

T

如此处所述: https://www.polymer-project.org/1.0/docs/devguide/local-dom.html#node-finding