0

배경 : 내가 작업하고있는 프로젝트의 일부로, 사용자 (아래의 경우 "아티스트"라고 함)는 일련의 역할 : 관리자, 제작자, 에이전트 등. 따라서 사용자가 선택한 역할에 따라 페이지의 특정 부분을 표시하거나 숨길 필요가 있습니다.AngularJS ng-show 지시문에서 표현식 계산하기

예 : 내가 그/그녀의 역할 중 하나로 조건부 사업부를 보여주기 위해 다음은 사용자가 선택한 "관리자"를 사용하여 시도했다 (그리고이 그 숨겨진 "관리자"가 선택되지 않은 경우) 운이 없다. 대신 ng-show 지시어에서 무엇을 사용해야합니까?

<div class="manager_section" ng-show="data.artist.roles.name == 'Manager'">Sample Text Here</div> 

참고 :는 사업부가 적용되지 않은 NG 쇼/NG 숨기기 지시문을 잘 나타납니다, 그래서 CSS 응답 또는 아무것도 찾는 게 아니에요; 간단히 ng-show/ng-hide에서 제공하는 조건부 측면을 찾고 있습니다.

<div ng-repeat="role in data.artist.roles">{{ role.name }}</div> 
+0

는'NG-repeat' 내에서 그'NG-show' 조건인가? – tymeJV

+0

아니요, 별개입니다. 혼란스러워서 죄송합니다. 사실, ng-repeat는 페이지에 전혀 포함되지 않을 것입니다. 롤 데이터가 페이지에 전혀 도달하지 않았는지 확인하기 위해 일시적으로 사용했습니다. – Andrew

+0

글쎄,'roles'이 배열 인 경우 - 그런 식으로 조건을 사용할 수 없습니다 - 어떤 인덱스를 확인할 지 어떻게 알 수 있습니까? – tymeJV

답변

0

: 그리고 내가, 그것을 테스트 페이지에서 사용자가 정확하게 표시하고 선택했던 역할의 각각의 이름을 다음 실행할 때 때문에 역할에 대한 데이터가 페이지로 끌려 가고 알고 임의의 JavaScript 코드를 실행해야하는 경우 컨트롤러 메소드를 사용할 수 있습니다. 예를 들어

:

<div class="manager_section" ng-show="isAuthorized('Manager')">Sample Text Here</div> 

angular.module('myApp', []) 
       .controller('AppCtrl',function(){ 
        $scope.isAuthorized = function(role){ 
         for(var i=0;i<$scope.data.artist.roles.length;i++){ 
          if($scope.data.artist.roles[i].name === role) return true; 
         } 
         return false; 
        } 
       }; 
+0

원더풀, 고마워요! – Andrew