本文实例为大家分享了vue组件封装实现抽奖随机数的具体代码,供大家参考,具体内容如下

一、子组件

<template>
    <div>
     <slot></slot>
    </div>
</template>
 
 
<script>
     export default {
         name:'countUp',
         props:{
             lastSymbol:{
                 type:String,
                 default:" 位"  
             },
             value:{ //滚动结束最终显示数字
                 type:[String,Number],
                 default:100,
             },
             from:{ // 开始时的数字
                 type:[String,Number],
                 default:0
             },
             speed:{ // 总时间
                 type:[String,Number],
                 default:2000,
             },
             refreshInterval:{ // 刷新一次的时间
                 type:[String,Number],
                 default:10,
             },
             beforeSize:{ //小数点前最小显示位数,不足的话用0代替 
                 type:[String,Number],
                 default:0
             },
             decimals:{ // 小数点后的位数,小数做四舍五入
                 type:[String,Number],
                 default:2
             },
             isstart:{ //是否开始滚动
                 type:Boolean,
                 default:true
             }
         },
        data(){
         return{
             loops:'', //刷新次数
             increment:'', //刷新一次增加的数值
             loopCount:'', //记录刷新的次数
            CurrentValue:'',  //开始时候的数字
            interval:'', //定时器
            sizeNum:'',//当前数字的长度
            sizeNumBefore:'', //当前数字小数点前的位数
              }
 
          },
         watch:{
            isstart(val){
   
                if(val){
                  this.start()
                }else{
                  clearInterval(this.interval);
                }
 
            }
         },
        methods:{
            start(){
               this.loops = Math.ceil(this.speed / this.refreshInterval)//刷新次数
 
                this.increment = (this.value - this.from)/this.loops  //(结束的数字-开始的数字)/刷新次数 ,刷新一次增加的数值
                this.loopCount = 0 //记录刷新的次数
                this.CurrentValue = this.from //开始时候的数字
 
                this.interval = setInterval(this.updateTimer,this.refreshInterval) //设置定时器,没个一段时间就执行
            },
            updateTimer(){ //刷新一次数值叠加
             this.CurrentValue =this.increment //当前展示的值
             this.loopCount   //刷新次数 1
             
            var tim = this.CurrentValue.toFixed(this.decimals) //对当前值进行四舍五入 ,tim四射物质之后的当前数值
 
             this.sizeNum = String(tim).length;
             
             this.sizeNumBefore = this.sizeNum - this.decimals - 1;
              
             if(this.sizeNumBefore>=this.beforeSize){ //当前数字的小数点位数》=要求的小数点前位数
               
               this.$emit('sendValue',tim   this.lastSymbol)
 
             }else{
 
                  tim = Array(this.beforeSize-this.sizeNumBefore   1).join('0')   tim;
                  this.$emit('sendValue',tim   this.lastSymbol)
 
             }
 
 
            if(Number(this.loopCount)>=Number(this.loops)){ //清楚定时器
 
                 clearInterval(this.interval);
 
             }
 
            }
            
        },
     
     }
</script>
<style scoped> 
    
</style>

二、父组件

<template>
  <div class="about marquee">
  
 
    <count-up value="99.99" decimals="0" :isstart="isstart" @sendValue="acceptValue"><span class="changeNum">{{currentNum}}</span></count-up>
 
    <button class="btn" @click="goChoujiang">是否开始滚动</button>
  </div>
</template>
 
<script>
 
import countUp from '../../components/countUp/countUp.vue';  //下拉框带popup蒙层
export default {
   name:'cecountUp',
   components: { //注册组件
    countUp
  },
 
  data() {
    return {
     currentNum:"即将开始抽奖", //当前数值
     isstart:false, //是否开始滚动数值
    };
  },
  methods: {
   acceptValue(val){ //接收当前的数值展示到页面
    this.currentNum =val
   },
   goChoujiang(){ //更改抽奖
       this.isstart = !this.isstart
   }
  
  },
 }
</script>
 
 
<style scoped>
  .changeNum{
    color:red;
    font-size: 32px;
  }
  .btn{
    background-color: pink;
    box-shadow:0px 2px 4px 0px rgba(255,130,0,0.7)
  }
</style>

三、效果展示

四、所用知识点:

父子组件之间的传值,定时器setInterval(),清楚定时器clearInterval(),tofixed()四舍五入方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

vue组件封装实现抽奖随机数的更多相关文章

  1. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. iOS和Android的常用随机数生成器

    如果我们在两者中都提供相同的种子,我需要一个在iOS和Android中产生相同数字序列的随机数生成器.我用srand(1000)尝试了rand()函数.但它给出了不同的输出.然后我尝试了mersennetwister.但这也为同一种子提供了不同的序列.有谁可以帮我这个.我正在使用cocos2d-x进行开发.解决方法我已经改编了一个在线CRandomMersenne库,我真的很抱歉,我再也找不到那个

  3. Swift - Swift生成随机数

    在Swift中生成随机数有很多方法可以达到目的这里介绍最简单的两种方法,第一种是使用arc4random()函数,第二种是使用arc4random_uniform()函数1.funcarc4random()->UInt32如果要生成一个生成在一定范围内的随机整数,可以这么写:该方法会生成[min,max]范围内的随机整数如果需要生成随机浮点数,基本思路相同,只不过多了一步因为arc4random返

  4. Swift 中随机数的使用

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. Swift随机数产生

    参考Swifterarc4random是一个十分优秀的随机数算法,并且在Swift中也可以使用。它会返回给我们一个任意整数,我们想要在某个范围里的数的话,可以做模运算取余数就行了。但是Swift的Int是和cpu构架有关的:在32位的cpu上实际上他是Int32,而在64位cpu是Int64。arc4random所返回的值不论在什么平台上都是一个UInt32,于是32位的平台就有几率进行Int转换时越界。

  6. Swift - 使用arc4random()、arc4random_uniform()取得随机数

    arc4random()这个全局函数会生成9位数的随机整数1,下面是使用arc4random函数求一个1~100的随机数1vartemp:Int=Int+12,下面是使用arc4random_uniform函数求一个1~100的随机数temp:Int=Int+1

  7. 如何在苹果的Swift语言中生成一个随机数?

    我意识到Swift的书提供了一个随机数生成器的实现。最好的做法是在自己的程序中复制和粘贴此实现?还是有一个库,这样做,我们可以使用吗?使用标准库函数来获得高质量的随机数:arc4random()或arc4random_uniform(),就像在Objective-C中一样。它们在Darwin模块中,因此如果您没有导入AppKit,UIKit或Foundation,则需要导入Darwin。

  8. 用Swift生成随机数

    我需要生成一个随机数。它看起来arc4random函数不再存在以及arc4random_uniform函数。我具有的选项是arc4random_stir(),arc4random_buf和arc4random_addrandom。我找不到任何文档的功能,没有在头文件中的注释提示。Tolearnmoreaboutdrand48()andits“family”ofsimilarfunctionscheckthe07000arc4random_uniformReturnsarandomnumberbetween

  9. 如何在Swift中不重复生成随机数?

    25个如何在不使用Swift语言两次调用数字的情况下生成0到31之间的随机数?您可以创建一个返回随机数生成闭包的函数,如下所示:要使用它,首先调用生成器一次以创建随机序列生成器,然后根据需要多次调用返回值.这将打印出1到6之间的随机值,在重新开始之前循环遍历所有值:

  10. 什么是Swift3中的种子随机数(Xcode8 beta 1)

    我需要在每次执行应用程序时启动相同的随机数列表.srand/rand不再存在了.那我该怎么办?您可以使用Swift3中的srand48(种子)和drand48().

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部