(更改)angular2中的事件挂钩

Par*_*ain 2 javascript events logical-operators angular

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

我的代码在这里..

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

调用change事件时,两个条件都不按预期工作.

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

当第一次调用change事件时它正常工作但第二次它只适用于第一个条件,即holiday.在我的例子中,我所期望的是值为true或false,但不是预期的值.

当然有一些错误.有没有人可以正确解释(change)事件的生命周期?

Pan*_*kar 6

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

如果第一个表达式出错,它将不会评估下一个表达式.

(change)="holiday= !holiday;employee= !employee"
Run Code Online (Sandbox Code Playgroud)

&&操作员如何工作?

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

在你之前holiday= !holiday && employee= !employee.初始负载两者holiday&employee具有false价值.当你单击checkbox它进行评估时holiday= !holiday && employee= !employee,holiday&employeevalue变为true.

基本上在幕后当第一次holiday= !holiday得到评估,holiday成为truefalse&holiday= !holiday表达式返回最新值(返回true),第二表达是否做同样的事情与回报true.

现在holiday = true&employee = true.再次单击复选框时.它调用change事件并再次尝试评估holiday= !holiday && employee= !employee.哪里holiday= !holiday的回报false,这样的话,因为我上面提到如何&&操作符?.它不关心表达式的下一部分,并返回false值.

现在holiday = false&employee = true.如果再次单击复选框,则holiday转到true&继续评估employee结果true来自的表达式的其他部分false.