我不明白为什么ng-repeat似乎在做不必要的工作.
我已经实现了一个小的导航菜单示例来显示我的意思.我创建了一个包含控制器(NavCtrl)的Angular模块,其中我:
在$ scope中填充导航菜单数据,和
创建一个函数,该函数根据是否选择了指定的菜单项返回一个类.注意:这非常类似于Stackoverflow问题中的代码,它看起来像是一种实现基于散列的通用导航菜单概念的好方法(如果你知道一个,请指出一个更好的概念!).
我创建了一个我的例子的JSFiddle.
我的问题是:为什么ng-repeat循环会被执行三次?请注意我的Javascript方法中的控制台日志记录行navClass
.当我在Chrome中运行它并只是加载HTML时,我得到以下输出:
evaluating route: home, against page: home testmod.js:29 evaluating route: home, against page: teams testmod.js:29 evaluating route: home, against page: events testmod.js:29 evaluating route: home, against page: venues testmod.js:29 evaluating route: home, against page: settings testmod.js:29 evaluating route: home, against page: home testmod.js:29 evaluating route: home, against page: teams testmod.js:29 evaluating route: home, against page: events testmod.js:29 evaluating route: home, against page: venues testmod.js:29 evaluating route: home, against page: settings testmod.js:29 evaluating route: home, against page: home testmod.js:29 evaluating route: home, against page: teams testmod.js:29 evaluating route: home, against page: events testmod.js:29 evaluating route: home, against page: venues testmod.js:29 evaluating route: home, against page: settings testmod.js:29
在我看来,ng-repeat循环运行了三次,在我的5项示例菜单列表中产生了15行输出,即使我的标记看起来应该只遍历项目一次:
解释或建设性的批评高度赞赏!