我正在从官方指南中学习Angular 2。我偶然发现了以下代码。
@Component({
selector: 'loop-back',
template: `
<input #box (keyup)="0">
<p>{{box.value}}</p>
`
})
export class LoopbackComponent { }
正如您在模板中看到的,keyup
事件绑定到0
、(keyup)="0"
。我不明白当一个事件绑定到一个数字时意味着什么。在doc中,它说
代码将
keyup
事件绑定到数字0
,这是最短的模板语句。虽然该语句没有任何用处,但它满足了Angular的要求,因此Angular将更新屏幕。
我也在互联网上搜索过,但找不到任何关于将事件绑定到数字的解释。有人能帮我吗?谢谢
(keyup)="0"
意思是,当该事件发生时,return 0
,相当于"什么都不做"。除了根本不添加任何事件绑定之外,没有更简短的方式来表达这一点。
该示例中使用事件绑定来运行更改检测,默认情况下,每次调用事件处理程序时都会运行更改检测。
如果没有事件绑定,就没有事件处理程序,Angular也不会运行更改检测,这将导致{{box.value}}
不更新值。
我也不清楚,因为我认为Angular会触发任何异步事件的更改检测。例如Angular大学指出:
以下常用的浏览器机制经过修补以支持更改检测:
- 所有浏览器事件(点击、鼠标悬停、按键等)
- setTimeout()和setInterval()
- Ajax请求
但这不是全部事实,因为官方文件说:
Angular只有在应用程序对异步事件(如击键)做出响应时才会更新绑定(从而更新屏幕)。此示例代码将keyup事件绑定到数字0,这是最短的模板语句。虽然该语句没有任何用处,但它满足了Angular的要求,因此Angular将更新屏幕。
因此显然必须在应用程序中处理异步事件才能触发更改检测,因此(keyup)=";0">