我有文章评论的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的答案进行设置。
所以我在我的控制器中创建了一个函数:
$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"
答案 0 :(得分:2)
在HTML
中使用此功能General
这是确定用户是否属于管理员角色的方法。
<div ng-show="hasAdminRole(comment.user.roles)" class="col right">
<i class="icon ion-record admin"></i> Admin
</div>
答案 1 :(得分:0)
也许你在这一行上有错误?
var indexOfRole = $scope.comments.indexOf(user.roles);
您正在此处查看此用户的角色列表是否存在于评论数组中。
也许你只需要检查实际的user.roles
数组,看看那里是否有Admin角色?类似的东西:
$scope.hasRole = function(user) {
for (var i = 0; i < user.roles.length; i++) {
if (user.roles[i].slug === 'admin') { return true; }
}
return false
}
答案 2 :(得分:0)
那是因为它是一个对象,你可以获取只有数组的索引。在您提供的链接中是一个数组。