基于angularJS的抽奖单页实践

前言:之前笼统的学习了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";
}

抽奖思路

  1. 点击抽奖按钮之后,当前页面隐藏,抽奖页面显示,即先调用函数showhide(1,2)
  2. 自定义闪动圈数var circle = 6;
  3. 声明随机中奖号码
    var luckyKey = Math.floor(Math.random()*$scope.items.length)
  4. 循环闪动函数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);
}
IONIC 功能全演示 ===================== - 使用Ionic提供的UI 组件。Ionic本身是致力于建立统一的移动混合app构建平台,核心基础是Angular+Cordova。 - 通过Angular指令封装,以及预定义的CSS,提供了开箱即用的HTML5 Mobile组件。 - 构建与开发支持,能够直接运行www目录下的index.html进行开发调试。同时也支持发布人员利用gulp构建输出到dist目录 - 利用gulp,同样演示了单元测试以及场景测试。 - [在线演示,内有地址二维码,可手机浏览](http://1.thm1118.sinaapp.com/static/ionic/www/index.html) ## 预览 ![信息卡片](screenshot/card.png) ![下拉刷新](screenshot/pullrefress.png) ![表单元素](screenshot/form.png) ![菜单](screenshot/menu.png) ![列表左滑按钮](screenshot/option.png) ![弹出层](screenshot/pop.png) ![tab](screenshot/tab.png) ![幻灯](screenshot/slide.png) ![图片水平滚动](screenshot/hscroll.png) ![毛玻璃效果](screenshot/blure.png) ![2000条数据搜索](screenshot/search.png) ![输入自动完成](screenshot/autocomplete.png) ![列表自动分组](screenshot/autogroup.png) ![媒体相册](screenshot/galaxy.png) ![chartjs统计图](screenshot/chartjs.png) ![百度统计图](screenshot/echat.png) ![图片延时加载](screenshot/imageload.png) ## 基础环境 纯webapp运行或演示,只需要一个 web server部署即可。 ## 目录结构说明 - www 目录:源码目录 - dist目录:构建输出目录 ## 利于开发,测试和打包部署的nodejs环境 简单开发可以不依赖nodejs环境。但是有了基于nodejs的javascript完整开发周期环境,会极大提升开发效率,保障质量。 - nodejs 最新版。 - 有些node包的安装需要c++编译,x86版本只需要 x86的C++编译器,windows上的x64 c++编译器需要特别设置。 - npm 会很慢,要么使用代理,要么使用国内镜像,比如 [淘宝镜像](http://npm.taobao.org/) , 使用淘宝镜像后,npm命令需要替换成cnpm命令。 - `npm install -g gulp` - `npm install -g ionic` - 如需编译sass的话,安装 [ruby](https://www.ruby-lang.org/zh_cn/),再执行 `gem install sass`(如遇到ssl错误,修改为http源:gem source -a http://rubygems.org/) - `npm install -g node-gyp` - 有的node包依赖python编译,安装 [python2.7](https://www.python.org/) - c++编译环境[MSVStudio 免费版](https://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop).。注意根据studio不同版本指定 --msvs_version=2013 选项 - 安装项目开发依赖包,在项目根目录下运行 `npm install` ### “所见即所得”式开发 - 在项目根目录下运行 `ionic serve`,即可在www目录下开展“所见即所得”的方式开发 - 另外一种方式,在webstorm里对index.html 按debug运行,同样是“所见即所得”的方式开发 ### CROS支持 - 生产环境的 CROS支持要么使用jsonp技术,要么在服务端设置代理。 - 而开发环境下要么 基于不安全做法,服务端api 设置头`Access-Control-Allow-Origin:*" `,要么按如下便捷设置: 基于`ionic serve`, 可以在开发时使用本地代理。ionic.project 内设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值