gpt4 book ai didi

javascript - 任何函数调用后是否触发 AngularJs 摘要循环?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:29:25 25 4
gpt4 key购买 nike

我有一个定义函数的指令 innerBarStyle()在链接阶段并将其绑定(bind)到范围:

restrict : 'EA',
scope: {
values: '='
},
link: function(scope, elements, attributes){
scope.innerBarStyle = function(value){
console.count("innerBarStyleCounter");
return {
width: 10px;
};
}),
templateUrl: 'template.html'
};

这个函数除了计算它被执行的次数并返回一个对象外什么都不做。

现在,在模板指令的模板中,我通过表达式调用此函数。类似于 <div ... ng-style=innerBarStyle(someValueInCurrentScope)><div>

我在实践中得到的是一个无限循环,导致重复调用上述函数。经过一些研究,我发现这通常发生在被调用函数隐式或显式触发摘要循环时(例如,如果它使用 $http 服务)。但在这种情况下,函数实际上什么都不做。摘要周期是否有可能在其他地方触发,或者我错过了什么?顺便说一句,我知道会有更好的方法来实现相同的结果,我只是对这里的工作原理感到好奇。

最佳答案

在没有看到实际代码的情况下(我知道你不能发布确切的代码,因为它是为了你的工作)我只能猜测。但我认为正在发生的事情是您正在通过返回 $scope 来调整元素的样式。 innerBarStyle 触发调用摘要循环的 ng-style 指令,再次触发范围函数。因此,持续执行此逻辑。

为了解决这个问题,您应该在指令的 elem 上使用 angular.element API 来调整 CSS。

关于javascript - 任何函数调用后是否触发 AngularJs 摘要循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419950/

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