前言:之前笼统的学习了angular框架,纸上得来终觉浅,这次自己独立完成了一个简单的抽奖单页。也算是给自己前面的学习一个总结和交代。
界面效果:
业务流程:
首先用户在首页点击抽奖按钮,进入抽奖界面,红色砖块将会快速随机跳动,最终停在某一个奖品之上,即刻进入抽奖结果页面。
核心代码:
初始化奖品
$scope.items = [
{id:1,name:"IPhone7",status:0},
{id:2,name:"现金5000元",status:0},
{id:3,name:"美的电冰箱",status:0},
{id:4,name:"美的微波炉",status:0},
{id:5,name:"床上四件套",status:0},
{id:6,name:"充电宝",status:0},
{id:7,name:"保温杯",status:0},
{id:8,name:"苹果耳机",status:0},
{id:9,name:"50元话费",status:0}
];
其中status用于判断当前奖品是否显示被抽中,下面会再提到(当status为1时显示为红色砖块)
构造一个类似Jquery的选择函数
$scope.$$ = function(id){
return document.getElementById(id);
}
隐藏前一个页面显示下一个页面
$scope.showhide = function(pre,next){
pre = "step"+pre;
next = "step"+next;
$scope.$$(pre).style.display = "none";
$scope.$$(next).style.display = "block";
}
抽奖思路
- 点击抽奖按钮之后,当前页面隐藏,抽奖页面显示,即先调用函数
showhide(1,2)
- 自定义闪动圈数
var circle = 6;
- 声明随机中奖号码
var luckyKey = Math.floor(Math.random()*$scope.items.length)
- 循环闪动函数
next(0)
开始调用
var next = function(key){
$scope.items[key].status = true;
if((key-1)>=0){
$scope.items[key-1].status = false;
}
if(key==0){
$scope.items[$scope.items.length-1].status = false;
}
var timer = $timeout(function() {
if(circle <= 0 && luckyKey == key){
$scope.showhide(2,3);
$scope.result = $scope.items[key].name;
return;
}
if($scope.items.length == key+1){
circle--;
}
if($scope.items[key+1]){
next(key+1);
}else{
next(0);
}
}, 100);
}