2016-01-26 3 views
-2

У меня есть 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.

+0

почтовый индекс образца/что у вас уже есть ... – mani

ответ

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> 
1

Я предлагаю вам использовать ассоциативный массив вместо массива объектов, которые вы используете в настоящее время.

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

Таким образом, вы можете написать функцию, чтобы проверить и перевернуть «понравившегося» флаг, а функция проверки флага.

$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

+0

Есть немного впереди себя там. Вы можете имитировать ассоциативный массив в javascript, используя слабую типизацию. –

+0

да .. это больше похоже на это. Также обратите внимание на строки в интерполяционной разметке – charlietfl

Смежные вопросы