(更改)角度 2 中的事件钩子

(change) event hook in angular2

本文关键字:事件 更改 角度      更新时间:2023-09-26

我知道 angular2 中的(更改(event Binding,但我很惊讶为什么我的代码没有按预期工作?

我的代码在这里。

http://plnkr.co/edit/9pSWSeqBc5oaSAtsfwNY?p=preview

调用更改事件时,不是两个条件都按预期工作。

(change)="holiday= !holiday && employee= !employee"

当第一次调用更改事件时,它工作正常,但第二次它仅适用于第一个条件,即holiday。在我的示例中,我期望的值为真或假,但与预期不同。

肯定有一些错误。有没有人能正确解释(change)事件的生命周期?

您应该用;而不是&&运算符分隔它们。

如果第一个表达式出错,则不会计算下一个表达式。

(change)="holiday= !holiday;employee= !employee"

&&操作员如何工作?

  1. 假设a && b,如果两者都为真,那么只有它返回 true(简而言之,不应该有任何false值,否则它将返回 false(。
  2. 在计算a && b代码将首先检查值是否true a然后只有解释器会b值来评估它。如果a值,它自己是 false,它不会评估(检查(b的值,并a && b 表达式将返回false

在你holiday= !holiday && employee= !employee之前.在初始负载下,holiday & employee 都具有false值。当你点击checkbox它计算holiday= !holiday && employee= !employeeholidayemployee值都变成true

基本上在幕后,当第一个holiday= !holiday被计算时,holiday变得true falseholiday= !holiday表达式返回最新值(返回true(,第二个表达式是否做同样的事情并返回true

现在holiday = true employee = true。再次单击该复选框时。它调用更改事件并再次尝试评估holiday= !holiday && employee= !employeeholiday= !holiday在哪里返回false,那么正如我上面提到的&&运算符是如何工作的?它不关心表达式的下一部分,并返回false值。

现在holiday = false employee = true。如果您再次单击复选框,则holiday结果为true并继续评估表达的其他部分,employee通过这些表达式从false true