给定ul列表,定义如下:

<ul click.delegate="onListItemClick()">
    <li repeat.for="suggestion of suggestions">
        ${suggestion.name}
    </li>
</ul>

如何将建议对象传递给onListItemClick?我知道我可以将click.delegate放在每个单独的li元素上,然后捕获当前的suggestion,但这不违背事件委托(delegate)的想法吗?我的意思是-然后,我将附加多个事件处理程序,如果是这样,我可以使用click.trigger。我不想这样做,因为这些suggestion对象可能很多。

最佳答案

将点击处理程序放在li元素上。这就是与Aurelia进行事件委派的全部重点。它使您可以像这样进行操作,而无需创建大量事件处理程序。框架为您创建了一个事件处理程序。它委派电话。所有元素的click事件都将设置为相同的功能,Aurelia将处理调用您的VM方法。

这是gist.run:https://gist.run/?id=406bf3bc73e415db7afa7d46d7e958d3

<template>
  You clicked suggestion id "${clickedId}"
  <ul>
    <li repeat.for="suggestion of suggestions" click.delegate="handleClick(suggestion)">
      ${suggestion.name}
    </li>
  </ul>
</template>

07-28 11:20