在 Angular 中'$'事件前面添加美元符号有什么效果?



在 Angular 中的事件前面添加"$"美元符号有什么效果?

onModelUpdated($event: any) {
console.log($event);
}

onModelUpdated(event: any) {
console.log(event);
}

变量名称中的$前缀没有任何影响。JavaScript 中的$美元符号(以及 TypeScript 扩展(是用作变量名称一部分的有效标识符,它没有语法含义。它可以在变量/函数名称的开头、中间或结尾使用。

特别是当涉及到$event及其在Angular中的使用时,它更像是从AngularJS时代继承下来的惯例。在 AngularJS 中,框架公开的内部变量以$为前缀。

这就是为什么有时你看到event,有时$event.

有人提议摆脱它,但什么也没发生。

因此,这更多的是风格和惯例的问题,由个人/项目偏好来提出一个关于是使用$event还是event的约定。

在调用事件处理程序时使用$event作为参数(在模板上绑定事件时(允许您提取事件数据。这就像 Angular 中的某种保留词。如果您使用该事件(不带$(,则会收到错误。

如果您的处理程序需要此数据,这就是获取访问权限的方法。

为了清楚起见,$event是 Angular 框架中定义的事件参数的名称。

父指令通过绑定到此属性并通过$event对象访问数据来侦听事件。

美元符号是名称的一部分,因此必须这样报告。再一次,它不是您可能遵循或不遵循的约定,它是内部框架已经为对象指定的名称,您必须按其名称调用它才能访问它。

请注意,您必须在html 模板中使用$event,而在类中,您可以根据需要重新定义函数的参数。 来自 Angular 文档的示例:事件有效负载必须按照 html 模板中的$event编写src/app/item-output/item-output.component.html

<app-item-output (newItemEvent)="addItem($event)"></app-item-output>

但是你可以自由地调用类中的参数(例如src/app/app.component.ts这里(是最合适的(在这个例子中newItem: string

(
addItem(newItem: string) {
this.items.push(newItem);
}

最新更新