我有this issue here recorded on a video让您更容易理解。正如你所看到的,我从一个数组中选择一些元素并将这些元素推送到另一个名为$scope.favoriteLeague = [];
的数组,以便做一个最喜欢的联赛列表,在那个视频中,我按照我想要的次数推送元素我不希望这样,我希望能够只选择列表中的每个元素一次,如果用户尝试选择已在收藏夹数组中的元素,则会显示一条消息。
我正在使用lodash
和angular
,这是代码:
$scope.favoriteLeague = [];
$scope.addToFavorites = function(league) {
$scope.favoriteLeague.push(league);
};
HTML
<ion-item ng-repeat="league in favoriteLeague">
{{league.name}}
</ion-item>
答案 0 :(得分:4)
您应该检查它是否不在数组中。 @itcouldevenbeaboat很接近但应该是=== -1
而不是!== -1
$scope.addToFavorites = function(league) {
if ($scope.favoriteLeague.indexOf(league) === -1){
$scope.favoriteLeague.push(league);
}
};
答案 1 :(得分:1)
您可能正在寻找.indexOf()
方法。将这个包裹在调用addToFavorites
的代码周围(这样,如果值已存在,您甚至不会调用该函数):
if ($scope.favoriteLeague.indexOf(league) === -1) {
. . . your existing call to addToFavorites . . .
}
或者,如果您使用的是jQuery,则可以使用$.inArray()
方法执行相同的操作。
答案 2 :(得分:1)
实际上,我根据@itcouldevenbeaboat答案获得了自己的解决方案
$scope.addToFavorites = function(league) {
if ($scope.favoriteLeague.indexOf(league) === -1) {
$scope.favoriteLeague.push(league);
}else {
console.log('already exists!!!!!');
}
};
答案 3 :(得分:0)
在推送之前,请检查阵列是否包含联盟。
$scope.addToFavorites = function(league) {
$scope.favoriteLeague.indexOf(league) === -1 ? $scope.favoriteLeague.push(league) : void 0;
};