例如,我有一个像这样的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方法,因为这是一个很棒的功能。
答案 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