gpt4 book ai didi

javascript - AngularJS 1.6 - $onChanges 执行两次

转载 作者:行者123 更新时间:2023-11-28 17:49:29 24 4
gpt4 key购买 nike

我可能想得太多了,这就是我来这里的原因。 :)

注意:在下面的示例中,对象“ctrl”是组件的 Controller 别名。 var ctrl = this;

假设我们有一个组件,它有两个绑定(bind),其中一个是可选的:

bindings: { 
params: '<',
company: '<?'
}

有时该公司可用,有时则不可用。

$onChanges 看起来像:

ctrl.$onChanges = function(changes) {
if (changes.params || changes.company) {
console.log('executed');
}
}

似乎当两个绑定(bind)都更新时,$onChanges 运行两次。第一次,组件中的 ctrl.company (绑定(bind))为 null,即使我确实用值更新了该绑定(bind)。第二次,ctrl.company就有了它的值(value)。

现在,我明白 OR 运算可能不正确。我只是有点不确定 $onChanges 的功能。

如果我对问题的描述不清楚,我会更新。

提前致谢。

最佳答案

From Angular code:

$onChanges(changesObj) - Called whenever one-way (<) or interpolation (@) bindings are updated. The * changesObj is a hash whose keys are the names of the bound properties that have changed, and the values are an * object of the form { currentValue, previousValue, isFirstChange() }. Use this hook to trigger updates within a * component such as cloning the bound value to prevent accidental mutation of the outer value.

所以在我看来你有 2 个绑定(bind)项: paramscompany这导致$onChanges触发两次。

如果你想写一次日志,我会写&& :

if (changes.params && changes.company) {
console.log('executed');
}

关于javascript - AngularJS 1.6 - $onChanges 执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45887798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com