在Angular 2中,为什么在括号中是事件属性?

时间:2016-08-23 16:01:18

标签: javascript angularjs angular

在Angular 1中,例如我们会在元素内部说ng-click="wasClicked()", 但现在我们说(click)="wasClicked()"。为什么是这样?我想到的唯一想法是Angular 2不必为每个元素事件都有一个属性,即括号内的任何东西都会被处理,无论是否有一个有意义的处理程序?

2 个答案:

答案 0 :(得分:3)

对于事件

决定()有各种各样的要点
  1. () event的括号有意义,因为Angular 2通过单一语法糖替换了几乎(20)event A1指令。
  2. 您还可以在括号(myCustomEvent)="myHandler($event)"中包含任何customEvent名称($event是事件对象)。
  3. 将HTML中的()视为有效的HTML。
  4. 旁注

    ()一样,括号用单个()括号替换几个A1 20指令同样[]属性绑定也取代16角度指令。

    很棒Misko's Video解释为什么他决定()参加活动& []用于属性绑定。

答案 1 :(得分:2)

长期讨论应该使用什么语法。最后()被确定了。

在Angular2中,没有针对每个受支持事件的特定指令。

(click)="clickHandler($event)"

clickHandler方法注册为click事件的处理程序,其中click可以是任何有效的事件名称,也可以是自定义事件。

为任何元素未发出的事件注册处理程序也是有效的。如下所示,您无法事先知道发生了什么事件。

这增加了灵活性,因为新事件不需要任何代码更改或新指令。

例如,您可以致电

element.dispatchEvent(new CustomEvent('my-xxx-event', { bubbles: true }));

并使用

收听
(my-xxx-event)="doSomething($event)

没有任何额外的工作。