Angular2:绑定事件为0是什么意思?

时间:2017-01-12 08:37:36

标签: javascript angular events

我正在从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将更新屏幕。

我也在互联网上钻研,但找不到任何关于将事件绑定到数字的解释。有人可以帮我这个吗?感谢。

2 个答案:

答案 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”