角度检查对象数组中的值

时间:2016-01-26 01:58:58

标签: javascript arrays angularjs

我有Likes数组,其中包含喜欢帖子的用户

Likes: [{username: "xyz" name: "xyz"}, {username: "pqr" name: "pqr"}]

在视图中,我想检查用户是否已经点击过,以便我可以在下次显示时显示。

<button type="button" class="btn btn-link">Like</button>
<button type="button" class="btn btn-link">UnLike</button>

有人可以告诉我如何过滤用户名的Likes数组,以便我可以将其用于ng-show

2 个答案:

答案 0 :(得分:1)

我建议你使用一个关联数组,而不是你当前使用的对象数组。

var likes = [];
likes['xyz'] = {liked: true};
likes['pqr'] = {liked: false};

这样你就可以编写一个函数来检查和翻转'likes'标志,以及一个检查标志的函数。

$scope.onClick = function(user) {
  if (!$scope.liked[user]) return;
  $scope.liked[user].liked = !$scope.liked[user].liked;
}

$scope.showLike = function(user)
{
  if (!$scope.liked[user]) return;
  return $scope.liked[user].liked;
}

并在你的HTML中:

<button ng-click="onClick('xyz')" ng-show="!showLike('xyz')">
  like
</button>

<button ng-click="onClick('xyz')" ng-show="showLike('xyz')">
  unlike
</button>

请参阅此jsFiddle

答案 1 :(得分:0)

 <button type="button" data-ng-hide="(likes | filter:{username: 'username'}).length >0">Like</button>
 <button type="button" data-ng-show="(likes | filter:{username: 'username'}).length >0">UnLike</button>