2017-08-01 2 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> 

のfuctionのcheckPermissionsは、現在のユーザが、彼はそれがfalseを返します何の権限と削除ボタンウォン」を持っていない場合は、プロジェクト を削除する権限を持っているかどうかを確認するためにhttp.postでAPIをお送りします表示されない なぜ私は無限ループをゲットしているのですか? 私は郵便配達で、私のAPIをテストし、それが魅力 Consoleのメインエラーのように動作します。$ rootscope:はng-repeatで無限ループを引き起こしますか?アンギュラ/ノード/マングース

+2

非常に東にcheckPermissions関数をポストします。実際、コントローラをポストするだけです。 – Araymer

+0

コントローラはhtmlページのbodyタグのメインコントローラです –

+0

thefunctionはpostmanとうまく動作する単純なhttp投稿ですので、問題はangularjsノードではありません –

答えて

-1

infdigそれは無限ループではありません:checkPermissionsは(角度でフレームレートに相当)の各ビューのループで呼び出されます。これは、すべてのフレームで呼び出されるng-hideが原因です。これを解決するには、コントローラ内のプロジェクトごとにcheckPermissionsを1回だけ呼び出すだけで、結果のみをチェックすることです。

// 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関数を置くべきですか? –

0

同様

あなたの質問を編集し、私達にあなたの角度コントローラのコードを示してもらえますか?一般に、無限ループエラーに関する角度のドキュメントを調べることをお勧めします。

https://docs.angularjs.org/error/$rootScope/infdig

グッドラック!

関連する問題