【发布时间】:2019-04-19 19:43:23
【问题描述】:
我在页面上显示一组对象数组。每个对象都有一个点击事件。我想通过单击包装器来替换那么多点击事件(现在已经超过三千个点击事件)。 比如当前代码
<div *ngFor="var service of services">
<div *ngFor="var cat of service.cats">
<div (click)="catClick(cat)">{{cat.name}}</div>
<div (click)="increaseQuantity(cat)">+</div>
<div (click)="decreaseQuantity(cat)">-</div>
</div>
</div>
所需的代码
<div (click)="someCommonFunc($event)">
<div *ngFor="var service of services">
<div *ngFor="var cat of service.cats">
<div>{{cat.name}}</div>
<div>+</div>
<div>-</div>
</div>
</div>
</div>
但在 event.target 中,我只得到元素的 HTML 代码。 如何获取已绑定在该 html 元素上的 angular 对象?
【问题讨论】:
-
为什么?您要解决的具体问题是什么?
-
我想减少听众数量
-
好的,但是为什么呢?你面对这些听众的问题是什么?您是否已证明这些点击侦听器会导致严重的性能问题,从而证明您尝试以不明显、复杂的方式做事是合理的?
-
我看到的问题不是您有 3000 个点击事件,而是您在页面上显示 1000 个项目,而这又需要这些点击事件。添加一些过滤并将页面/屏幕上的项目数量限制在合理的数量,例如 50 甚至 100。您可以使用各种分页技术和过滤控件来使用户的体验更易于管理。没有人愿意滚动浏览 1000 个项目来找到他们想要的。