我知道(改变)event Binding
在 angular2 中,但我很惊讶为什么我的代码没有按预期工作?
我的代码在这里..
http://plnkr.co/edit/9pSWSeqBc5oaSAtsfwNY?p=preview http://plnkr.co/edit/9pSWSeqBc5oaSAtsfwNY?p=preview
当调用更改事件时,两个条件都不会按预期工作。
(change)="holiday= !holiday && employee= !employee"
当第一次调用更改事件时,它工作正常,但第二次它仅适用于第一个条件,即holiday
。在我的示例中,我期望的是值要么为真,要么为假,但不符合预期。
肯定有什么错误。有谁能解释一下生命周期吗(change)
活动正常吗?
你应该将它们分开;
代替&&
操作员。
如果第一个表达式出错,则不会计算下一个表达式。
(change)="holiday= !holiday;employee= !employee"
How &&
运营商工作吗?
- Suppose
a && b
,如果两者都为真,那么只有它返回 true(简而言之,不应该有任何false
值,否则将返回 false)。
- 评价时
a && b
代码将首先检查a
值为true
那么只有口译员会去b
来评价它的价值。如果a
自我价值是false
然后它不评估(检查)b
的值,并且a && b
表达式将返回false
.
在你拥有之前holiday= !holiday && employee= !employee
。初始加载时holiday
& employee
has false
价值。当您点击checkbox
它评估holiday= !holiday && employee= !employee
, both holiday
& employee
值变为true
.
第一次时基本上在幕后holiday= !holiday
得到评估,holiday
变成true
to false
& holiday= !holiday
表达式返回最新值(返回true
),第二个表达式是否做同样的事情并返回true
.
Now holiday = true
& employee = true
。当您再次单击该复选框时。它调用更改事件并再次尝试评估holiday= !holiday && employee= !employee
.
Where holiday= !holiday
return false
,那么正如我上面提到的How &&
运营商工作吗?。它不关心表达式的下一部分,并返回false
value.
Now holiday = false
& employee = true
。如果您再次单击复选框,那么holiday
结果是true
& 继续评估表达式的其他部分employee
结果是true
from false
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)