Javascript 角度:ng中继器中的ng类,重复呼叫
首先为我的英语感到抱歉。 我的问题是: 我有一个简单的代码:Javascript 角度:ng中继器中的ng类,重复呼叫,javascript,angularjs,duplicates,ng-repeat,ng-class,Javascript,Angularjs,Duplicates,Ng Repeat,Ng Class,首先为我的英语感到抱歉。 我的问题是: 我有一个简单的代码: <li ng:repeat="item in menu.items" ng:class="getMenuItemClass(item)"> <a ng:href="#{{item.url}}">{{item.label}}</a> </li> 这是一个现成的例子, 我不知道为什么,但在我的实际应用程序中,它是一式三份的!:0 如果我犯了错误,有人能给我解释一下吗 我已经将JSFDL
<li ng:repeat="item in menu.items" ng:class="getMenuItemClass(item)">
<a ng:href="#{{item.url}}">{{item.label}}</a>
</li>
这是一个现成的例子,
我不知道为什么,但在我的实际应用程序中,它是一式三份的!:0
如果我犯了错误,有人能给我解释一下吗
我已经将JSFDLE更新到angular的最新版本,现在已经是四份了!
小心
编辑以澄清:
问题在于getMenuItemClass()是
比要求的次数多得多,
尝试打开JSFIDLE,打开浏览器控制台并查看console.log Angular可以在
摘要
循环中多次计算表达式,因此函数的执行会一次又一次地进行
如本文所述
Angular进入$digest循环。该回路由两个较小的回路组成
处理$evalAsync队列和$watch列表的循环。美元文摘
循环不断迭代,直到模型稳定,这意味着
$evalAsync队列为空,$watch列表未检测到任何
变化
因为$watch表达式是一个函数,所以可以多次调用它
或者查看服务中的$routeChangeStart
事件。
您可以订阅此活动。
在你的作用域上创建一个变量,并将
ng类
绑定到该变量我没有看到任何三倍或四倍-我只看到两个菜单选项,Home和Alt。你能进一步澄清吗?对不起!没错,问题是getMenuItemClass()的调用次数比所需次数多得多,请尝试打开JSFIDLE并打开浏览器控制台并查看console.log!
scope.getMenuItemClass = function(item) {
console.log(item)
var hashPath = $location.hashPath || '/';
if (hashPath === item.url) {
return 'selected';
}
return '';
};