AngularJS 1.4避免多个摘要调用和最大调用堆栈

时间:2015-11-24 19:20:22

标签: angularjs

我正在一个角度应用程序中工作,其中Projects有许多部件,并且正在从服务器获取数据结构。在Angular中,部件没有项目属性,只有project_id。项目有一个Commission_rate,我需要访问它才能计算给定部分的实际佣金和总价。

我的想法是在从服务器获取项目时将项目分配给每个部分。我尝试了以下操作:

angular.forEach(project.parts, function(part) {
    part.project = project;
});

但是我超出了大量的Max调用大小堆栈,并且10个摘要循环达到了错误。

我也尝试使用$ .extend浅拷贝项目并将其分配给part.project,但最终结果是一样的。

非常感谢任何见解。

1 个答案:

答案 0 :(得分:0)

因为你只提供这个小代码片段所以我能做的就是告诉你我想要的东西:

在angular的$ digest循环中,调用所有观察器函数,并将值与其先前状态进行比较。 Angular比重复摘要循环以确保观察者函数本身不会引入任何更改。这个循环将继续,直到没有检测到更改或循环计数器达到10.比角度放弃。 (这种机制称为脏检查)

我会尝试在任何绑定应用之前更改项目对象,这可能在$ http promise的success函数内。