【发布时间】:2017-02-01 01:10:26
【问题描述】:
我有以下代码。
https://plnkr.co/edit/Tt7sWW06GG08tdJu72Fg?p=preview。请完全展开窗口以查看整个视图。
我有 categories 和 sub-categories 显示在导航栏中,如上面的 plunkr 所示。每个类别都有要显示的服务/子类别。
我正在使用 2 个嵌套的 ng-repeats,而内部的一个正在使用来自 ng-repeat 的父迭代的值。我已将函数getServicesByCategory 附加到内部ng-repeat,该函数从DocumentsFactory 调用getServicesByCategory 并解析promise 以返回数组对象subcategories 中的数据,最终应该由内部@987654333 迭代@。
类别显示正常,但子类别不显示。
这有两个问题。
1)。每个类别的子类别都显示相同,并且显示的子类别属于外部 ng-repeat 迭代中的最后一个类别,即Utility Services。相反,每个类别都应该显示它自己的子类别。
2)。由于尝试超过 10 次,控制台显示多个 infinite digest cycle 中止错误,这些错误 http://errors.angularjs.org/1.5.6/$rootScope/infdig?p0=10&p1=%5B%5D 在控制台中重复出现。方法getServicesByCategory在无限循环中被调用,触发多个摘要循环。
似乎是一个简单的类别问题,由 Angular 的 dirty checking 和 digest cycles 复杂化。
我阅读了多个线程和帖子,建议不要在与 ng-repeat 关联的函数内返回新对象,而我不是。我正在返回subcategories 的引用。
inner ng-repeat 依赖于来自outer 的数据之一。将函数绑定到 ng-repeat 对我来说是唯一的选择。这是正确的方法吗?获取类别和子类别的 API 是不同的,我无法灵活地更改它们。我一直无法想出解决方案。只想针对每个类别调整子类别。
任何帮助将不胜感激!
注意:在全窗口中打开视图可以看到左侧的导航栏。
【问题讨论】:
标签: javascript angularjs promise angularjs-ng-repeat angular-promise