将对象数组中键的值与AngularJS中的变量进行比较

时间:2019-07-08 09:26:37

标签: javascript angularjs

我有一个名为follower_tb的表。表中的列如下所示:follow_id(这是主键),follower_id(此ID是跟随另一个人的人),followed_id(被跟随的人的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

我将忽略我的结果中的partner_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
}]

从此开始,这意味着id为1和id为2的人正在彼此关注。 ID为1的人跟随ID为3的人,但ID为3的人没有追随者。最后,id为4的人跟随id为1的人,但他/她没有跟随。 我将结果放入一个范围( $ scope.allfollowing )中,并使用ng-repeat(在所有跟随中为x)在视图中循环。 帐户的所有者(ID为1的人)的ID已保存在范围( $ scope.signedin_id )中。 我的主要问题是,我只想使用angularjs的ng-if显示这两个按钮之一。第一个按钮是取消关注(在第一种情况下应显示该按钮,因为两者是紧随其后的。在第二种情况下也应显示该按钮,因为ID为1的人已跟随ID为1的人3),第二个按钮是关注对象(在第三种情况下应显示该对象,因为ID为1的人尚未关注ID为4的人)。 我本可以使用这样的东西:

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

但是问题是:对于具有is 2的人(其ID跟随1的人,并且他也追随其返回的人),两个按钮都将显示,我该如何解决这个问题?

如果有人向我展示一种有效的解决方法,我会很高兴。

1 个答案:

答案 0 :(得分:0)

不确定这是否是显示按钮的方式,但是也许您可以执行以下操作:

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