$event
è l'evento stesso.
L'evento che associa (someevent)
consente di eseguire il binding agli eventi DOM e agli eventi EventEmitter
. La sintassi è esattamente la stessa.
Per gli eventi DOM $event
è il MouseEvent
, KeyboardEvent
, o il valore evento del tipo di qualunque evento si ascolta.
Per EventEmitter
eventi il valore emessa è disponibile come $event
Assumendo questo esempio $event
si riferisce alla emessa istanza Ferrari
auto:
@Output() carChange:EventEmitter<Car> = new EventEmitter<Car>();
someMethod() {
this.carChange.emit(new Car({name: 'Ferrari'}));
}
Se non si utilizza $event
come nel (click)="clicked()"
allora l'evento il valore non è passato.
In realtà, per quanto mi ricordo che è ancora passata in alcuni browser ma non in tutti (non ricordo quali)
Ma se si utilizza la funzionalità Angolari WebWorker, allora il vostro metodo non potrebbe ottenere il evento licenziato o emesso se non lo si elenca esplicitamente.
fonte
2016-06-21 12:23:52
Sotto il cofano Angular usa un parametro chiamato $ event e copia letteralmente il codice di richiamata '' 'cliccato ($ event)' '', quindi l'evento $ è codificato in modo rigido su quel valore. Sembra che questo '' 'self.parentView.context.clicked ($ event)' ''. Se usi un nome personalizzato invece di $ event, ad esempio '' 'event123''', Angular controllerà la proprietà componentInstance.event123 e la passerà come parametro - che sarà probabilmente null/undefined. È un comportamento simile all'utilizzo di gestori inline HTML '' '' '' dove può essere utilizzato solo il testo esatto '' 'event''' – Ryan
@Brian Generalmente non passare l'argomento 'event' come parte del valore dell'attributo, ma il gestore ha quell'argomento' function clickHandler (event) {..} '(se richiesto). Penso che OP dovrebbe sapere, come funzionano gli eventi in DOM, come mostrato [qui] (https://github.com/shamhub/Front-end-programming/blob/master/4_Javascript_Programming/Topic8_DOM_Access/DOM_interface_hierarchy.png) – overexchange
@overexchange You devi passare l'argomento 'evento' dall'attributo dell'elemento '' 'onclick =" clickHandler (event) "' '', altrimenti l'evento non verrà passato al gestore nel file JS. http://plnkr.co/edit/9oOCztMuaq7rkowdHsGT?p=preview Questo si collega molto strettamente a come si sta comportando Angular in questa istanza – Ryan