【问题标题】:Angular2: What does binding event to 0 mean?Angular2:将事件绑定到 0 是什么意思?
【发布时间】:2017-05-27 06:44:27
【问题描述】:

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

我也在互联网上进行了深入研究,但找不到任何关于将事件绑定到数字的解释。谁能帮我解决这个问题?谢谢。

【问题讨论】:

    标签: javascript angular events


    【解决方案1】:

    我也不清楚,因为我认为 Angular 会触发对任何异步事件的更改检测。例如Angular University 声明:

    修补了以下常用浏览器机制以支持更改检测:

    • 所有浏览器事件(单击、鼠标悬停、按键等)
    • setTimeout() 和 setInterval()
    • Ajax 请求

    但这并不是一个完整的事实,因为official documentation 说:

    Angular 更新绑定(因此屏幕)只有当应用程序对异步事件做出响应时,例如击键。此示例代码将 keyup 事件绑定到数字 0,这是可能的最短模板语句。虽然该语句没有任何用处,但它满足了 Angular 的要求,因此 Angular 将更新屏幕。

    显然,必须在应用程序中处理异步事件才能触发更改检测,因此 (keyup)="0"

    【讨论】:

      【解决方案2】:
      (keyup)="0"
      

      表示,当该事件发生时,然后return 0,相当于“什么都不做”。除了根本不添加任何事件绑定之外,没有更短的表达方式。

      在该示例中使用事件绑定来运行更改检测,默认情况下,每次调用事件处理程序时都会运行。

      如果没有事件绑定,就没有事件处理程序,Angular 也不会运行更改检测,这将导致{{box.value}}更新值。

      【讨论】:

        猜你喜欢
        • 2011-09-13
        • 1970-01-01
        • 2015-03-20
        • 2020-01-07
        • 2018-09-10
        • 2023-03-03
        • 2017-05-09
        • 2017-09-27
        • 2018-09-25
        相关资源
        最近更新 更多