我有一个名为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的人,并且他也追随其返回的人),两个按钮都将显示,我该如何解决这个问题?
如果有人向我展示一种有效的解决方法,我会很高兴。
答案 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;
}