2016-04-07 119 views
0

我有一個項目列表,並在每個項目上我有一個按鈕,我可以點擊「添加到收藏夾」,然後一個變量應設置爲true,並啓用一個類。Angular添加到收藏夾

在我的控制,我給自己定$ scope.isFavourite =假的 - 當點擊一個按鈕,我設置了$ scope.isFavourite =真

這樣做的問題是,網頁上的所有項目獲取類

這個代碼: HTML:

而且在我的控制器:

$scope.addToFav = function() { 
$ionicPopup.show({ 
    title: 'Tilføj til favoritter', 
    subTitle: 'Ønsker du at tilføje denne butik til dine favoritter?', 
    scope: $scope, 
    buttons: [ 
    { text: 'Nej' }, 
    { 
     text: '<b>Ja</b>', 
     type: 'button-positive', 
     onTap: function(e) { 
     $scope.isFavourite = true; 
     } 
    } 
    ] 
}); 

};

問題是,點擊時,它不會將其隔離到您點擊的按鈕,而是在全局級別,這意味着我的列表中的每個按鈕都會獲得class =「active」,只有它在哪裏應該是我點擊的按鈕

+0

您是通過收藏夾陣列重複? – Rob

+0

現在,它只是靜態內容,但後來數據來自web服務 – nuffsaid

+0

這樣的事情?他們也切換。 https://jsfiddle.net/tud0jk1d/ – Rob

回答

0

通過使用scope: $scope您正在將範圍設置爲surro unding控制器範圍,因此所有彈出窗口共享相同的isFavourite變量。

你可以做這樣的事情:

<div ng-repeat="item in items"> 
    <button ng-click="addToFav(item)" ng-class="{'active' : item.isFavourite}"><i class="ion-heart"></i> Netto</button> 
</div> 

控制器:

$scope.addToFav = function (item) { 
    $ionicPopup.show({ 
     title: 'Tilføj til favoritter', 
     subTitle: 'Ønsker du at tilføje denne butik til dine favoritter?', 
     scope: $scope, 
     buttons: [ 
      { text: 'Nej' }, 
      { text: '<b>Ja</b>', 
       type: 'button-positive', 
       onTap: function(e) { 
        item.isFavourite = true; 
       } 
      } 
     ] 
    }); 

工作plunker:

http://codepen.io/kbkb/pen/ONzgBQ?editors=1111

0

你將要看看Angular Components(一些文檔可以找到here。基本上,一個組件是一個可重用的代碼片段,它有自己的作用域,一個組件不會影響其他組件,我會詳細介紹,但我不知道Angular以及我做的Angular 2.