(更改)Angular2 中的事件钩子

2024-04-20

我知道(改变)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 &&运营商工作吗?

  1. Suppose a && b,如果两者都为真,那么只有它返回 true(简而言之,不应该有任何false值,否则将返回 false)。
  2. 评价时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(使用前将#替换为@)

(更改)Angular2 中的事件钩子 的相关文章