2016-07-18 11 views
0

に私が記事のコメントのNGリピートを持っている場合は、次のようになりますよう:角度NG-ショー配列

<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

は、だから、私は、コントローラ内の関数を作っ:

$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" 

答えて

1

これはユーザーがadminロールに属しているか、いないことを決定する方法である、あなたのHTMLに

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

これを使用してください。

$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; 
} 
0

おそらくこの行にエラーがありますか?

var indexOfRole = $scope.comments.indexOf(user.roles); 

ここでは、このユーザーの役割のリストがコメントの配列内に存在するかどうかを確認しています。

おそらく実際のuser.rolesアレイをチェックインして、そこに管理者ロールがあるかどうかを確認する必要がありますか?以下のような何か:

$scope.hasRole = function(user) { 
    for (var i = 0; i < user.roles.length; i++) { 
    if (user.roles[i].slug === 'admin') { return true; } 
    } 
    return false 
} 
0

これはオブジェクトなので、配列のインデックスのみを取得できます。あなたが提供したリンクは配列です。