2017-08-01 35 views
0
<tr ng-repeat="x in projects"> 
<td>{{x.projects.project_name}}</td> 
<td ng-hide="checkPermissions(x)"><button ng-click="deleteProject(x)"> Delete</button</td> 
</tr> 

的机能的研究checkPermissions将发送一个API与http.post来验证当前用户是否有权删除该项目 许可,如果他没有权限将返回false和删除按钮赢得”不会显示 你能告诉我为什么我得到一个无限循环? 我测试了我的API与邮差和它的作品般的魅力 控制台主要错误:$ rootscope:infdig是ng-repeat在这里造成无限循环?角/节点/猫鼬

+2

发布checkPermissions函数,位于最东端。其实,可能只是发布控制器。 – Araymer

+0

控制器是HTML页面的主体标记的主要控制器 –

+0

该函数是一个简单的http post,可以与邮递员一起工作,所以问题与angularjs不是节点 –

回答

-1

这不是一个无限循环:checkPermissions调用的每个视图环路(相当于帧率的角度)。这是由于在每一帧上调用的ng-hide。解决方案是只为控制器中的每个项目调用checkPermissions一次,并只检查结果。

// myController.js 
$scope.projects.forEach(project => { 
    project.canDisplay = checkPermissions(project) 
} 

// myHtml.html 
ng-hide="x.canDisplay" 
+0

我每次调用它,因为我有一个项目的数组,并在每个项目名称前我有一个删除按钮,所以每个X都会在每次通话中被验证!你理解我? –

+0

我明白你想做什么,但我解释为什么每次调用ng-hide表达式。所以,它不是无限的代码,它是像这样工作的angularjs的核心。有多种解决方案可以避免每次调用checkPermissions,我建议你一个。现在,似乎你想每次都调用checlPermissions,而这正是它所做的。 – HollyPony

+0

我不明白你的解决方案!我应该在哪里放置checkPermissions功能 –