我试图在dom-repeat
模板内的每个元素上调用一个函数。
<dom-repeat items="[[cart]]" as="entry">
<template>
<shop-cart-item id="item"></shop-cart-item>
</template>
</dom-repeat>
...
checkStatus() {
this.$.item.doSomething();
}
如何调用doSomething
每个元素?
我试图在dom-repeat
模板内的每个元素上调用一个函数。
<dom-repeat items="[[cart]]" as="entry">
<template>
<shop-cart-item id="item"></shop-cart-item>
</template>
</dom-repeat>
...
checkStatus() {
this.$.item.doSomething();
}
如何调用doSomething
每个元素?
您可以遍历节点,例如:
checkStatus() {
const forEach = f => x => Array.prototype.forEach.call(x, f);
forEach((item) => {
if(item.id == 'cartItem') {
console.log(item);
item.doSomething(); // call function on item
}
})(this.$.cartItems.childNodes)
}
on-tap
您可以在循环中添加事件。为了观察您单击了哪个项目,请查看model
属性:
<dom-repeat items="[[cart]]" as="entry">
<template>
<!-- need to give dynamic id for each item in dome-repeat -->
<shop-cart-item id="[[index]]" on-tap = 'checkStatus'></shop-cart-item>
</template>
</dom-repeat>
...
checkStatus(status) {
console.log(status.model) // you can get index number or entry's properties.
this.$.item.doSomething();
}
编辑:
因此,根据@Matthew 的评论,如果需要在元素函数之一中调用函数,则dom-repeat
首先给出id name
如上所述的动态:
checkStatus(status) {
this.shadowRoot.querySelector('#'+ status.model.index).doSomething();
}