2016-02-14 59 views
0

我有一個使用ng-repeat的項目列表。每個項目有兩個按鈕「關注」和「取消關注」。 我需要根據哪些項目已經遵循(數組列表包含後續項目)一次顯示兩者中的任何一個。ng-repeat的多個ng顯示處理

在我的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-顯示值。 我想是這樣做的

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 =真/假不起作用。 我該怎麼去做這件事?

注意:我試過按鈕NF-顯示一個函數,它會在頁面加載運行,並得到了真/假值,但再有就是,怎樣才能再次改變它,當用戶按下遵循或取消關注的問題按鈕。

謝謝!

回答

1

您已經將每個元素的內部for循環中的屬性限制爲showUnFollowButton & showFollowButton。但在Html上使用它們時,您沒有正確使用它。

您需要將ng-show更改爲下方,因爲您已將這些屬性綁定到for循環內的每個元素。

ng-show="popShow.showUnFollowButton" 

ng-show="popShow.showFollowButton" 
+0

謝謝潘卡。這解決了這個問題,但我不明白爲什麼。 – KasparTr

+0

@ user2984127看看更新後的答案..基本上你做了正確的代碼..但錯過了使用該屬性綁定在html .. –

+0

對,謝謝! – KasparTr