使用ng-repeat进行多次ng-show处理

时间:2016-02-14 12:19:29

标签: javascript angularjs angularjs-ng-repeat ng-repeat ng-show

我有一个使用ng-repeat的项目列表。每个项目都有两个按钮"关注"和"取消关注"。 我需要一次显示两个中的任何一个,具体取决于已经遵循的项目(数组列表包含后续项目)。

在我的HTML中:

<ion-list>
  <ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="popShow in popShows" type="item-text-wrap" href="#/tab/popular/{{popShow.id}}" back-img={{popShow.backdrop_path}}>
    <h2>{{popShow.name}}</h2>
    <p>{{popShow.overview}}</p>
    <i class="icon ion-chevron-right icon-accessory"></i>
    <ion-option-button class="button-assertive" ng-click="follow(popShow)" id="followB" ng-show="showFollowButton">
      Follow
    </ion-option-button>
    <ion-option-button class="button-assertive" ng-click="unFollow(popShow)" id="unFollowB" ng-show="showUnFollowButton">
      Following
    </ion-option-button>
  </ion-item>
</ion-list> 

在我的控制器中,我需要更改特定项目按钮ng-show的值。 我想这样做

controller.js:

.controller('PopularShowsCtrl', function($scope, PopularShows){
  var followArray = PopularShows.getFollowArray();

  PopularShows.all().success(function(data){
     $scope.popShows = data.results;

     for (var i = 0; i < $scope.popShows.length; i++) {
     var currentItem = $scope.popShows[i];

     if ($.inArray(currentItem.id, followArray) > -1)
     {
       console.log("Following show: " + currentItem.name);
       currentItem.showFollowButton = false;
       currentItem.showUnFollowButton = true;

     }else{
       currentItem.showUnFollowButton = false;
       currentItem.showFollowButton = true;
     }
  }
  ...

currentItem.show(Un)FollowButton = true / false不起作用。 我该怎么做呢?

注意:我尝试在nf-show中按下一个函数,该函数会在页面加载时运行并获取true / false值,但是当用户有问题我怎么再次更改它按Follow或UnFollow按钮。

谢谢!

1 个答案:

答案 0 :(得分:1)

你已经限制showUnFollowButton&amp;每个元素的循环内部showFollowButton属性。但是在Html上使用它们时,你没有正确使用它。

您需要将ng-show更改为以下内容,因为您已经将这些属性绑定到for循环中的每个元素。

ng-show="popShow.showUnFollowButton"

ng-show="popShow.showFollowButton"