0

背景:作爲我正在開發的一個項目的一部分,用戶(在下面的情況下稱爲「藝術家」)可以選擇從以下系列中選擇一個或多個:角色:經理,製作人,代理人等等。因此,我需要根據用戶選擇的角色顯示或隱藏頁面的某些部分。在AngularJS ng-show指令中評估表達式

示例:我已經嘗試使用以下條件顯示一個div,當用戶選擇「經理」作爲他/她的角色之一(並且沒有選擇「經理」時隱藏它) ,但沒有運氣。我應該在ng-show指令中使用什麼?

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

請注意:股利似乎只是在沒有施加NG-顯示/ NG-hide指令罰款,所以我不是在尋找一個CSS的答案或任何東西;我只是在尋找由ng-show/ng-hide提供的條件方面。我知道對角色的數據被拉到頁面,因爲當我跑在頁面上下面來測試它,每個用戶已經選擇了正確顯示的角色的名字:

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

是'NG-repeat'內的'NG-show'條件? – tymeJV 2014-10-20 21:09:38

+0

不,它是分開的,抱歉有任何混淆。實際上,ng-repeat不會出現在頁面上,我只是暫時使用它來確保Roles數據完全到達頁面。 – Andrew 2014-10-20 21:12:55

+0

好吧,如果'roles'是一個數組 - 你不能像這樣使用一個條件 - 它如何知道要檢查哪個索引? – tymeJV 2014-10-20 21:13:35

回答

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 2014-10-20 21:27:07