理解angular2.0雙向資料繫結中的 $event
阿新 • • 發佈:2018-12-31
app/hero-form.component.html (excerpt)
<inputtype="text"class="form-control"id="name"required
[ngModel]="model.name"name="name"
(ngModelChange)="model.name = $event">
TODO: remove this: {{model.name}}
這個屬性繫結看起來很眼熟,但事件繫結看起來有點怪。
ngModelChange
並不是<input>
元素的事件。
它實際上是來自NgModel
x
指令有一個名為x
的輸入屬性,和一個名為xChange
的輸出屬性。
模板表示式中的另一個古怪之處是model.name = $event
。 之前看到的$event
物件來自
DOM 事件。 但ngModelChange
屬性不會生成 DOM 事件 —— 它是Angular EventEmitter
型別的屬性,當它觸發時,
它返回的是輸入框的值 —— 也正是希望賦給模型name
屬性的值。
很高興知道這些,但是這樣現實嗎?實踐上中,幾乎總是優先使用[(ngModel)]
形式的雙向繫結。 只有當需要在事件處理函式中做一些特別的事情(例如合併或限制按鍵頻率)時,才會拆分出獨立的事件處理函式