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)事件的生命周期?
您应该使用;而不是&&运算符来分隔它们.
如果第一个表达式出错,它将不会评估下一个表达式.
(change)="holiday= !holiday;employee= !employee"
Run Code Online (Sandbox Code Playgroud)
&&操作员如何工作?
- 假设
a && b,如果两者都为真,那么只返回true(简而言之,不应该有任何false值,否则它将返回false).- 在评估
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成为true以false&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.
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |