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

Evaluating an expression in AngularJS ng-show directive

本文关键字:表达式 指令 ng-show 评估 AngularJS      更新时间:2023-09-26

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

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

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

请注意:div看起来很好,没有应用ng-show/ng-hide指令,所以我不想找CSS答案或任何东西;我只是在寻找ng show/ng hide提供的条件方面。我知道角色的数据正在被拉到页面上,因为当我在页面上运行以下程序进行测试时,用户选择的每个角色的名称都会准确显示:

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

如果需要运行任意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;
                    }
                 };