我有点困惑,不太清楚$event
在这里是做什么的,以及这两个示例之间的区别。
<button (click)="clicked($event)"></button>
@Component(...)
class MyComponent {
clicked(event) {
event.preventDefault();
}
}
和
<button (click)="clicked()">Click</button>
@Component(...)
class MyComponent {
clicked(event) {
}
}
clicked($event)
,因此$event被硬编码为该值。它看起来像这样self.parentView.context.clicked($event)
。如果您使用自定义名称而不是$event,比如event123
,Angular将检查componentInstance.event123属性并将其作为参数传递 - 这可能是null/undefined。这类似于使用HTML内联处理程序<input type="button" onclick="clickHandler(event)">
,其中只能使用精确文本event
。 - Drenaievent
参数作为属性值的一部分传递,但是处理程序确实有该参数function clickHandler(event){..}
(如果需要的话)。我认为 OP 应该知道 DOM 中事件的工作原理,如此处所示 here。 - overexchangeonclick="clickHandler(event)"
传递'event'参数,否则事件将不会传递到JS文件中的处理程序。http://plnkr.co/edit/9oOCztMuaq7rkowdHsGT?p=preview 这与Angular在这种情况下的行为密切相关。 - Drenai