评估AngularJS ng-show指令中的表达式

时间:2014-10-20 21:07:03

标签: javascript angularjs angularjs-directive ng-show angularjs-ng-show

背景:作为我正在处理的项目的一部分,用户(在下面的案例中称为"艺术家")可以选择从中选择一个或多个一系列角色:经理,制片人,代理等等。因此,我需要根据用户选择的角色来显示或隐藏页面的某些部分。

示例:我已尝试使用以下内容在用户选择" Manager"时有条件地显示div。作为他/她的角色之一(当"经理"未被选中时隐藏它),但没有运气。我应该在ng-show指令中使用什么呢?

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

请注意:如果没有应用ng-show / ng-hide指令,则div显示得很好,所以我没有找到CSS答案或其他任何内容;我只是在寻找ng-show / ng-hide提供的条件方面。我知道角色的数据被拉到页面,因为当我在页面上运行以下内容进行测试时,用户选择的每个角色的名称都准确显示:

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

1 个答案:

答案 0 :(得分: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;
                    }
                 };