我正在从official guide学习 Angular 2 。我遇到了以下一段代码。
@Component({
selector: 'loop-back',
template: `
<input #box (keyup)="0">
<p>{{box.value}}</p>
`
})
export class LoopbackComponent { }
正如您在模板keyup
中看到的那样,事件绑定到0
,(keyup)="0"
。我不理解当一个事件被绑定到一个数字时意味着什么。在文档中它说
代码将
keyup
事件绑定到数字0
,可能是最短的模板语句。虽然该语句没有任何用处,但它满足Angular的要求,因此Angular将更新屏幕。
我也在互联网上钻研,但找不到任何关于将事件绑定到数字的解释。有人可以帮我这个吗?感谢。
答案 0 :(得分:11)
(keyup)="0"
表示,当该事件发生时,return 0
,这相当于&#34;什么都不做&#34;。除了不添加任何事件绑定之外,没有更短的表达方式。
在该示例中使用事件绑定来使更改检测运行,默认情况下,每次调用事件处理程序时都会运行。
没有事件绑定,没有事件处理程序,Angular不会运行更改检测,这将导致{{box.value}}
不更新值。
答案 1 :(得分:0)
我也不清楚,因为我认为Angular会在任何异步事件上触发更改检测。例如Angular University指出:
修补了以下常用的浏览器机制,以支持更改检测:
- 所有浏览器事件(单击,鼠标悬停,键入等)
- setTimeout()和setInterval()
- Ajax请求
但这不是一个完整的事实,因为official documentation表示:
只有当应用程序对异步事件(例如按键)做出响应时,Angular才会更新绑定(并因此更新屏幕)。此示例代码将keyup事件绑定到数字0(可能的最短模板语句)。虽然该语句没有任何用处,但它满足了Angular的要求,以便Angular更新屏幕。
因此,显然必须在应用程序中处理异步事件才能触发更改检测,因此(keyup)=“ 0”