我試圖製作一個動態的「收藏」切換按鈕。 單擊按鈕時,它應該將選定的播放器添加到用戶收藏夾列表中。如果玩家已經被收藏,應該將其移除。根據AngularJS中的條件添加和刪除陣列中的項目
我也嘗試遍歷收藏夾,以檢查玩家是否已經被收藏。如果這是真的,它會爲喜愛的明星黃金添色。
這裏有一些問題。只要數組只包含一個項目,我的for循環進行檢查似乎正常工作。但只要我嘗試添加更多,黃金圖標只會添加到收藏夾中的最後一位玩家上。因此,支票一次只能找到一個最愛,而且我可以多次添加一個球員到最愛,只要我改變我添加的球員。
如果有人能指引我正確的方向,並幫助我理解爲什麼我的循環無法正常工作,那將是太棒了!
http://codepen.io/utrolig/pen/LNgRwv
的Javascript
angular.module('test', [])
.controller('TestController', function($scope){
$scope.players = [
{
uniqueid: "gem",
name: "Ole Christian",
cake: false,
},{
uniqueid: "utrolig",
name: "Stian",
cake: false,
},{
uniqueid: "drozo",
name: "Adrian",
cake: false,
}
];
$scope.user = {
name: "Stian",
username: "stiba",
favorites: [{uniqueid: "drozo"}],
}
$scope.checkFavorite = function(id){
fav = $scope.user.favorites;
var exists;
for (var i=0; i < fav.length; i++){
if(fav[i].uniqueid == id){
exists = true;
} else {
exists = false;
}
}
return exists;
}
$scope.toggleFavorite = function(id){
fav = $scope.user.favorites;
if(fav.length === 0){
var newfav = {uniqueid: id};
fav.push(newfav);
} else {
if($scope.checkFavorite(id) === true){
for(var i = 0; i < fav.length; i++){
if (fav[i].uniqueid === id) fav.splice(i, 1);
}
} else if ($scope.checkFavorite(id) === false) {
var newfav = {uniqueid: id};
fav.push(newfav)
} else {
console.log('Error!');
}
}
}
$scope.isFavorited = function(){
return true;
};
})
HTML
<body ng-app="test">
<div class="container" ng-controller="TestController">
<h3>Players</h3>
<div ng-repeat="player in players" class="player-cont">
<div class="player">
<div class="favorite" ng-click="toggleFavorite(player.uniqueid)" ng-class="{'active': checkFavorite(player.uniqueid)}">
<i class="material-icons">star</i>
</div>
<i class="material-icons player-icon">person</i>
</div>
<div>
<p ng-bind="player.uniqueid"></p>
<p ng-bind="player.name"></p>
</div>
</div>
<h3>Favorites</h3>
<div ng-repeat="favorite in user.favorites track by $index">
<h5>{{favorite.uniqueid}}</h5>
</div>
<p class="user">
{{user.favorites}}
</p>
</div>
</body>
請詳細說明「一切都中斷」。預期的行爲是什麼?實際行爲是什麼? – Patrick
編輯我的帖子。如果你檢查codepen並點擊,明星,我認爲這會更容易理解! –