Сравнение значения ключа в массиве объектов с переменной в AngularJS - PullRequest
1 голос
/ 08 июля 2019

У меня есть таблица с именем follower_tb. Столбцы в таблице выглядят следующим образом: follow_id (это первичный ключ), follower_id (идентификатор человека, который следовал за другим человеком), follow_id (идентификатор человека, за которым следуют). Чтобы получить таблицу, я написал это заявление SQL.

SELECT p.participant_id,
       p.username,
       p.fullname,
       p.profile_pics,
       f.follow_id,
       f.follower_id,
       f.followed_id
FROM participant_tb p
JOIN follower_tb f ON ( p.participant_id = f.followed_id ) 
WHERE followed_id = 1 || follower_id =  1

Я буду пренебрегать member_tb в моем результате и сразу перейду к основному вопросу. Мой результат выглядит так

[{
  follow_id: 1,
  follower_id: 1,
  followed_id: 2
}, {
  follow_id: 2,
  follower_id: 2,
  followed_id: 1
}, {
  follow_id: 3,
  follower_id: 1,
  followed_id: 3
}, {
  follow_id: 3,
  follower_id: 4,
  followed_id: 1
}]

отсюда это означает, что люди с идентификатором 1 и идентификатором 2 следуют друг за другом. Человек с идентификатором 1 следует за человеком с идентификатором 3, но человек с идентификатором 3 не следует назад. Наконец, человек с идентификатором 4 следует за человеком с идентификатором 1, но он / она не следует назад. Я получил результат в области видимости ( $ scope.allfollowing ), и я использовал ng-repeat (x в allfollowing), чтобы просмотреть цикл в представлении. Владелец учетной записи (лицо с идентификатором 1) уже имеет свой идентификатор, сохраненный в области ( $ scope.signedin_id ). Моя главная проблема заключается в том, что я хочу отобразить только одну из этих двух кнопок, используя ng-if of angularjs. Первая кнопка - отмена подписки (это должно отображаться в первом случае, потому что они следуют друг за другом. Это также должно отображаться во втором случае, потому что человек с идентификатором 1 уже следует за человеком с идентификатором 3), вторая кнопка является последующим (это должно отображаться в третьем случае, потому что человек с идентификатором 1 еще должен следовать за человеком с идентификатором 4). Я мог бы использовать что-то вроде этого:

 ng-if="x.follower_id == signedin_id" 
 ng-if="x.followed_id == signedin_id" 

Но проблема в том, что: для человека с номером 2 (который следует за идентификатором 1 и он также следует назад) будут отображаться обе кнопки, как я могу решить эту проблему?

Я буду рад, если кто-нибудь покажет мне эффективный способ сделать это.

1 Ответ

0 голосов
/ 08 июля 2019

Не уверен, что именно так вы хотите отображать кнопки, но, возможно, вы могли бы сделать что-то вроде этого:

<div ng-repeat="x in allfollowing">
    <button ng-if="x.follower_id == signedin_id" click="unfollow(x.followed_id)"> 
       Unfollow {{x.followed_id}}
    </button>
    <button ng-if="x.followed_id == signedin_id && notfollowed(x.follower_id)" click="followback(x.follower_id)"> 
       Follow {{x.follower_id}} back
    </button>
</div>

notfollowed(string id){
    for x in allfollowing{
        if (x.followed_id == id){
        return false
        }
    }
    return true;    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...