最近在研究uni-app,制作了一个很有意思的集合项目demo,这里给大家分享下大转盘的前端设计思路

需求案例:大转盘抽奖

线上demo查看:

案例效果:

制作思路:

前端大转盘使用css3动画来做,在开始做的时候,我思路上碰到一个问题,抽奖结果是我前端给后台还是后台给我,最后我发现,只有后台传结果给前台才能实现代码的数据闭环,那么按照这个思路,前端需要处理的只是对后台返回的接口来对前端进行数据处理和特效展示。

主要代码:

data部分:

return {
imgUrl: app.appImg,
url: app.url,
indicator: false,
autoplay: true,
interval: 2000,
duration: 500,
dianimage: 0,
bgtimer: null,
domearr: [
{
title:'现金大奖',
id:1,
img:'#'
},
{
title:'积分大奖',
id:2,
img:'#'
},
{
title:'优惠券大奖',
id:3,
img:'#'
},
{
title:'赠品手机',
id:4,
img:'#'
},
{
title:'谢谢惠顾',
id:0,
img:'#'
},
{
title:'谢谢惠顾',
id:0,
img:'#'
},
{
title:'谢谢惠顾',
id:0,
img:'#'
},
{
title:'谢谢惠顾',
id:0,
img:'#'
}
],
swiperarr: [{
title:'恭喜 樱桃小丸子 抽到88元现金红包'
},
{
title:'恭喜 用户aaa 抽到77元现金红包'
}
],
mainname: 'kai',
endname: 't',
frequency:5,
mainbind :false
}

抽奖代码方法部分:

			btnFun(){
var that = this;
if(that.mainbind == false){
if(that.frequency == 0){
uni.showToast({
title: '你已无抽奖次数',
icon:"none",
duration: 2000
});
}else{
that.mainbind = true;
that.mainname = 'kai';
that.endname = 't';
var index = parseInt(Math.random() * 8);
that.mainname = 'kai'+(index+1);
setTimeout(()=>{
that.endname = 't'+(index+1);
that.frequency = that.frequency - 1;
if(that.domearr[index].id == 0){
uni.showModal({
title: '没有中奖,请再接再厉!',
content: '谢谢惠顾',
success: function (res) {
that.mainbind = false;
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}else{
uni.showModal({
title: '恭喜你中奖了!',
content: that.domearr[index].title,
success: function (res) {
that.mainbind = false;
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
} },3900);
} }else{
uni.showToast({
title: '请不要多次点击',
icon:"none",
duration: 2000
});
}
}

如果想要全部代码,欢迎和我联系获取demo源码,希望这个思路对你有所帮助,一起进步。

uni-app开发经验分享二十二: uni-app大转盘思路解析的更多相关文章

  1. AngularJs的UI组件ui-Bootstrap分享(十二)——Rating

    Rating是一个用于打分或排名的控件.看一个最简单的例子: <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" x ...

  2. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  3. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  4. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  5. 剑指Offer(二十二):从上往下打印二叉树

    剑指Offer(二十二):从上往下打印二叉树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ...

  6. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  7. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  8. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  9. Bootstrap入门(二十二)组件16:列表组

    Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...

  10. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

随机推荐

  1. 【架构师视角系列】QConfig配置中心系列之架构设计(一)

    目录 声明 配置中心系列文章 一.架构 基础模型 架构图 架构分层 运行规则 模块划分 Admin模块 Client模块 Server模块 二.总结 三.最后 声明 原创文章,转载请标注.https: ...

  2. Elasticsearch不同集群间备份恢复(S3存储)

    S3存储 首先都知道需要在ES集群上安装S3插件以及重启集群 在MINIO集群创建相应的桶 Kibana上注册快照存储库,两个不同的集群需要对接到同一个S3存储库,对接后会自动识别桶里的快照 < ...

  3. MOS 管工作原理

    浅谈MOS管的工作原理_数字IC修行者的博客-CSDN博客_mos管工作原理 一文讲明白MOS管工作原理 - 知乎 (zhihu.com) 闪存基本原理 (sohu.com)

  4. numpy数组初始化方法总结

    1 使用list初始化 a=np.array([[1,2,3],[4,5,6]],dtype='float32') #a=[[1. 2. 3.],[4. 5. 6.]] 2 赋值与复制 (1)赋值 a ...

  5. Mysql一张表可以存储多少数据

    Mysql一张表可以存储多少数据 在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB.同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB.(确切 ...

  6. os.path.relpath和os.path.basename,返回文件路径中的文件名

    from os import path print(path.relpath("/home/hpcadmin/lw/demo.py", start="/home/hpca ...

  7. java+mysql数据库实现的学生管理系统

    说明: java+mysql数据库实现的学生管理系统 功能 实现增加学生.删除学生.修改学生.学生列表.查询学生功能 截图: 开发工具/技术 java  eclipse 价格:50元,有需要联系 微信 ...

  8. jupyter notebook更改默认工作目录

    jupyter notebook默认配置路径:C:\Users\Administrator\.jupyter\jupyter_notebook_config.py 如果找不到配置文件,可以生成一个 j ...

  9. 【LeetCode字符串#extra】KMP巩固练习:旋转字符串、字符串轮转

    旋转字符串 https://leetcode.cn/problems/rotate-string/ 给定两个字符串, s 和 goal.如果在若干次旋转操作之后,s 能变成 goal ,那么返回 tr ...

  10. 连接微信群、Slack 和 GitHub:社区开放沟通的基础设施搭建

    NebulaGraph 社区如何构建工具让 Slack.WeChat 中宝贵的群聊讨论同步到公共领域. 要开放,不要封闭 在开源社区中,开放的一个重要意义是社区内的沟通.讨论应该是透明.包容并且方便所 ...