javascript - 如何让这个 JS 显示下一张卡片而不是随机卡片?
问题描述
我正在使用 HTML、CSS 和 JS 开发一个刷卡项目。
我从 codepen 获取了这个 JS 代码并实现了它,但问题是卡片是随机的。如何使其按顺序排列(不重复)?
angular.module('starter', ['ionic', 'ionic.contrib.ui.cards'])
.directive('noScroll', function($document) {
return {
restrict: 'A',
link: function($scope, $element, $attr) {
$document.on('touchmove', function(e) {
e.preventDefault();
});
}
}
})
.controller('CardsCtrl', function($scope, $ionicSwipeCardDelegate) {
var cardTypes = [
{title: '1'},
{title: '2'},
{title: '3'},
{title: '4'},
{title: '5'}
];
$scope.cards = Array.prototype.slice.call(cardTypes, 0, 0);
$scope.cardSwiped = function(index) {
$scope.addCard();
};
$scope.cardDestroyed = function(index) {
$scope.cards.splice(index, 1);
};
$scope.addCard = function() {
var newCard = cardTypes[
Math.floor(Math.random() * cardTypes.length)
];
newCard.id = Math.random();
$scope.cards.push(angular.extend({}, newCard));
}
})
.controller('CardCtrl', function($scope, $ionicSwipeCardDelegate) {
$scope.goAway = function() {
var card = $ionicSwipeCardDelegate.getSwipeableCard($scope);
card.swipe();
};
});
解决方案
我会更改以下内容:
$scope.cards = Array.prototype.slice.call(cardTypes, 0, 0);
将其替换为:
$scope.cards = cardTypes; // this keeps the series ordered as is defined
您可能想要.reverse()
cardTypes 所以数组中的第一项是第一张卡片(卡片实际上是从数组中弹出的,所以如果您不反转它,最后一项将是第一张卡片):
$scope.cards = cardTypes.reverse(); // reverse the array
然后似乎每次刷卡后都会随机添加新卡:
$scope.cardSwiped = function(index) {
$scope.addCard();
};
也许你可以评论整个事情,或者只是$scope.addCard()
如果它破坏了应用程序。
推荐阅读
- unity3d - 为 ml-agent 构建时,代理不会随内部大脑移动
- wordpress - 清理 wordpress 垃圾邮件链接
- android - 如何在单个回收视图或适配器中显示多个数据源数据?
- locking - 我可以从服务结构中的可靠字典中获取没有锁的项目吗
- python - 在离线模式下使用 Python 3.4 创建 Anaconda 4.5 环境?
- mockito - 如何将 @Before 方法中的 Mockito 1.x 模拟设置迁移到 Mockito 2.x?
- vb.net - dotNet Google DoubleClickBidManager API createQuery 失败
- r - 如何在 R 中的(多个)子组中对行进行采样而不进行替换
- c# - 如何使用 FluentAPI 添加等效的 OwnedAttribute?
- c - 访问已声明函数的参数