2016-11-29 72 views
1

我試圖創建一個菜單,允許某些用戶訪問某些內容:角 - 我的功能是在一個無限循環中運行

HTML

<ul class="dropdown-menu"> 
     <li><a href="/local" >Local</a></li> 
     <li><a href="/fazenda" ng-class = "{botaodisabled:botoes('Fazenda')}">Fazenda</a></li> 
     <li><a href="/gleba">Gleba</a></li> 

在此示例'Fazenda'將檢查如果用戶將要訪問功能botoes('Fazenda')以外的功能。最後,菜單中的所有項目都將獲得此功能以檢查用戶是否有權訪問它。問題是我的函數不會爲菜單的每個項目運行一次,從而造成無限循環。

角:

$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"; 
     } 
     } 
    }); 
} 

因爲你的方法是在每一個週期,這可能會導致一個無限重複,所以這將是更好地使用您的控制器範圍內觸發。