javascript - Angular ng-显示是否在数组中

标签 javascript angularjs

我有一个用于文章评论的 ng-repeat,如下所示:

<div ng-repeat="comment in comments">
          <li class="item" ng-class-even="'even'">
            <div class="row">
              <div class="col">
                <i class="icon ion-person"></i> {{ comment.user.first_name }} {{ comment.user.last_name }}
                <i class="icon ion-record"></i> {{ comment.created_at }}
              </div>
              <!-- TODO: this needs to be an ng-if admin -->
              <div ng-show="hasRole(comment.user)" class="col right">
                <i class="icon ion-record admin"></i> Admin
              </div>
            </div>
            <div class="row">
              <div class="col">
                <p>{{ comment.text }}</p>
              </div>
            </div>
          </li>
        </div>

仅当用户是管理员时,我才尝试显示此部分:

<div ng-show="hasRole(comment.user)" class="col right">
                <i class="icon ion-record admin"></i> Admin
              </div>

我尝试按照答案 here 进行设置.

所以我在 Controller 中创建了一个函数:

 $scope.hasRole = function(roleName) {
    return $scope.comments.user.roles.indexOf(roleName) >= 0;
  }

但它每次都会返回 -1,即使用户是管理员也是如此。我的数据如下所示:

1:Object
    $$hashKey: "object:28"
    article_id:"2"
    created_at:"2016-05-12 12:19:05"
    id:6
    text:"someCommentText"
    updated_at:null
    user:Object
        active:"1"
        created_at:null
        first_name:"admin"
        id:1
        last_name:"admin"
        roles:Array[1]
            0:Object
            created_at:null
            id:1
            name:"Admin"
            parent_id:null
            pivot:Object
            slug:"admin"

最佳答案

在 HTML 中使用它

<div ng-show="hasAdminRole(comment.user.roles)" class="col right">
    <i class="icon ion-record admin"></i> Admin
</div>

这是判断用户是否属于admin Angular 色的方法。

$scope.hasAdminRole = function(roles) {
    var isAdmin = false;
    for(var i = 0; i < roles.length; i++) {
        if (roles[i].name == 'Admin') {
            isAdmin = true;
            break;
        }
    }

    return isAdmin;
}

关于javascript - Angular ng-显示是否在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38432868/

相关文章:

javascript - 如何用 Golang 创建前端?以及其他问题

javascript - 使用 AngularJS 发布请求

javascript - Package.json 文件是 Angular 2 plus 项目的必需文件吗?

javascript - Angular 数据表不通过列重新排序进行过滤

css - AngularJS:通过流畅的动画增加减少div高度

javascript - 使用函数从数组中查找最小值和最大值

javascript - 使用 RSA 解密字符串

javascript - 表单验证 - 需要一组中的一个

javascript - 将 Highcharts-ng 与 JSON 结合使用

javascript - AngularJS - 路由不起作用