gpt4 book ai didi

javascript - AngularJS: Controller 中的函数被模板多次调用

转载 作者:行者123 更新时间:2023-11-27 23:00:04 25 4
gpt4 key购买 nike

我知道这个问题已经在这里被问过,似乎所有答案要么引用自 AngularJS 文档,要么没有提供解决方案(无论如何都不是我理解的解决方案),所以我会尝试一次更多。

我对 Angular 的体验相对较新,是几个月前开始的,所以如果这是基础知识,请原谅我的无知。

在帖子列表中(使用 ng-repeat 进行迭代),我有一个特殊的“分享到”按钮。
按钮上的链接 (href) 取决于三个不同的因素:post_id , user_id , network .

我正在尝试在我的 ng-repeat="post in posts" 范围内做到这一点

<a href ng-href="{{genShareUrl(post.id,post.author_id,'fb')}}>Facebook</a>

执行生成的原始函数在工厂中,我只是使用 genShareUrl作为 Controller 和工厂之间的中间人功能。

genShareUrl 注销时在后置 Controller 中的函数中,我看到这个函数被调用了多次。
实际上,如果我在从后端获取的所有帖子上全面运行它,我的应用程序就会停止。没有错误,只是永恒的加载(我认为我可能无意中触发了某种我不熟悉的永恒 $digest 循环,或者至少是一些指数调用模式)。

我尝试用一​​个简单的示例重新创建该场景:
http://codepen.io/Mestika/pen/xVexRa

在这里我可以看到,该函数首先被调用两次,然后四次 - 这表明摘要循环被多次触发。

在所描述的这种情况下,我该如何最好地在链接中产生一些值(value)?这是最佳实践吗?如果不是,您如何或者能否给我一个有关如何重构代码的示例。

最佳答案

Angular 使用脏检查来实现双向绑定(bind),所有双向绑定(bind)观察者都会在每个摘要周期中进行评估,这就是 genShareUrl 被多次调用的原因,以避免这种情况发生,您可以在模板中使用单向绑定(bind):

<a href ng-href="{{::genShareUrl(post.id,post.author_id,'fb')}}>Facebook</a>

关于javascript - AngularJS: Controller 中的函数被模板多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194716/

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