2016-11-29 10 views
1

私はいくつかのユーザーは、いくつかのコンテンツへのアクセスを持つことができるようにメニューを作成しようとしている無限ループで実行されていますユーザーが機能botoes('Fazenda')を超えてアクセスする場合最終的に、メニューのすべての項目は、ユーザーがアクセス権を持っているかどうかをチェックするためにこの機能を取得します。問題は、私の関数がメニューの各項目に対して1回実行されず、無限ループを作成することです。角度My機能は

角度:

$scope.botoes = function(nome) { 
     console.log(nome);   
     $http.get('/botaopermissao/'+nome).success(function(data) {  
      console.log(data);  

      if(data == "Encontrado!"){ 
       return true; 
      }else{ 
       return false; 
      } 
     }); 
    } 
+1

'$ http.get'は非同期です。すぐにtrue/falseを返す関数を使用する必要があります。あなたが非同期リクエストから何も返せないことは言うまでもない。 – Tomer

+2

これは**ダイジェストサイクルごとに起動される!!これをしないでください!コントローラーで初期化する '$ scope'プロパティーも作成してください。 – devqon

+1

' .success() 'の使用は廃止予定ですので、代わりに' .then() 'を使用してください。 – Claies

答えて

0
function(nome) { 
    console.log(nome);   
    $http.get('/botaopermissao/'+nome).success(function(data) {  
     console.log(data);  

     if(data == "Encontrado!"){ 
      $scope.botoa= "what you want"; 
     } 
     } 
    }); 
} 

あなたの方法は無限繰り返しを引き起こす可能性があり、すべてのサイクルでトリガされ、あなたのコントローラ内のスコープを使用する方がよいでしょうので。

関連する問題