我对角js很新,我有一个关于ng-repeat的问题。我跟随AngularJs的例子:https://docs.angularjs.org/guide/concepts
我目前所在的部分是“添加UI逻辑:控制器'”。如果你看一下index.html,特别是代码:
<span ng-repeat="c in invoice.currencies">
{{invoice.total(c) | currency:c}}
</span>
当我在浏览器中运行时,一切都按预期工作,但我注意到invoice.total函数运行至少6次。我怎么知道?在index.js中我在total函数中添加了一个console.log函数,如下所示:
this.total = function total(outCurr){
console.log(outCurr)
console.log(this.convertCurrency(this.qty * this.cost, this.inCurr, outCurr))
return this.convertCurrency(this.qty * this.cost, this.inCurr, outCurr);
};
我希望代码运行3次,因为invoice.currencies只有3项:
this.currencies = ['USD', 'EUR', 'CNY'];
有什么想法吗?提前谢谢你?
答案 0 :(得分:0)
user2341963可能有很好的答案所以我先引用它,然后我会添加一些精确度。
摘要周期至少运行两次,以检查值是否已经完成 改变。第一次运行此货币中的每个值。 它再次运行以检查第一个摘要周期是否没有改变 值。它并没有在第二个周期后停止
在角度上你有我们称之为摘要周期的东西。此循环监视应用程序中发生的任何更改绑定到angular。为了刷新它。这允许在您需要时刷新DOM而无需刷新整个页面。
“绑定角度”意味着
我不知道是什么让这个循环在启动时触发两次,这可能是因为你使用了一些内部机制或过滤器。请查看此链接以获取更多信息:https://www.ng-book.com/p/The-Digest-Loop-and-apply/