vue实现数据遍历、多个倒计时列表
移动端效果图:

1、HTML显示代码:
<template>
<div class="activeList">
<div class="list-box" v-for="(item,index) in activeDataList">
<div class="list-title">
<p>{{item.title}}</p>
<span>已参加人数 <i class="addpeo">{{item.nowNumber}}</i> / <i>{{item.maxNumber}}</i>人</span>
<button :class="item.isSignStart ? 'startBtn' : 'nostartBtn'" v-if="!item.signFinish" @click="goDetail(item.bindid,item.isActiveStart)">我要参加</button>
<button class="nostartBtn" v-if="item.isSigned" @click="goDetail(item.bindid,item.isActiveStart)">我已报名</button>
<button class="finishBtn" v-if="item.signFinish && !item.isFull">截至报名</button>
<button class="finishBtn" v-if="item.isSigned && item.signFinish && !item.isFull">我已报名</button>
<button class="finishBtn" v-if="item.isFull">已满额</button>
</div>
<div class="list-imgarea" @click="goDetail(item.bindid,item.isActiveStart)">
<div class="active-status nostart" v-if="!item.isActiveStart || !item.isSignStart">未开始</div>
<div class="active-status signed" v-if="item.isActiveStart || item.isSignStart">已开始</div>
<div class="active-status finishBtn" v-if="item.signFinish">已结束</div>
<div v-if="!item.signFinish && !item.isSigned" class="active-time">
<span v-if="!item.isSignStart">距开始还剩</span>
<span v-if="item.isSignStart">距截至还剩</span>
<i>{{item.dd}}</i> 天 <i>{{item.hh}}</i> : <i>{{item.mm}}</i> : <i>{{item.ss}}</i>
</div>
<img :src="item.imgUrl"/>
</div>
</div>
</div>
</template>
2、js逻辑部分代码:
<script>
import configUrl from '@/config'
import { MessageBox } from 'mint-ui'
export default{
name:"ActiveList",
data(){
return{
activeDataList:[],
isInitShowTime:true
}
},
mounted(){
this.getDataList();
},
methods:{
getDataList(){
var _this = this;
var sid = this.$route.query.sid;
var url = "activelist.json";
this.$ajax(url).then(function(res){
var myNewData = []
res.data.data.map(((item,index) =>{
myNewData.push(item)
_this.$set(item,"ss",_this.getTimeList())
}))
_this.activeDataList = myNewData; })
.catch(function(err){
MessageBox('提示', '网络错误');
})
},
goDetail(bindid,statu){
this.$router.push({
path:'/ActiveDetail',
query:{ //路由传参时push和query搭配使用 ,作用时传递参数
sid:this.$route.query.sid,
bindid:bindid
}
})
},
getTimeList(){
var _this = this;
setInterval(function(){
for (var key in _this.activeDataList) {
if(!_this.activeDataList[key]["isSignStart"]){
var end = new Date(_this.activeDataList[key]["startTime"].replace(/-/g,'/')).getTime();
}
else{
var end = new Date(_this.activeDataList[key]["endTime"].replace(/-/g,'/')).getTime();
}
var start = new Date().getTime();
var rightTime = end - start;
if (rightTime > 0) {
var dd = Math.floor(rightTime / 1000 / 60 / 60 / 24);
var hh = Math.floor((rightTime / 1000 / 60 / 60) % 24);
var mm = Math.floor((rightTime / 1000 / 60) % 60);
var ss = Math.floor((rightTime / 1000) % 60);
dd = dd > 9 ? dd : '0' + dd
hh = hh > 9 ? hh : '0' + hh
mm = mm > 9 ? mm : '0' + mm
ss = ss > 9 ? ss : '0' + ss
_this.activeDataList[key]["dd"] = dd;
_this.activeDataList[key]["hh"] = hh;
_this.activeDataList[key]["mm"] = mm;
_this.activeDataList[key]["ss"] = ss;
}
else{
_this.activeDataList[key]["dd"] = 0;
_this.activeDataList[key]["hh"] = 0;
_this.activeDataList[key]["mm"] = 0;
_this.activeDataList[key]["ss"] = 0; if(_this.activeDataList[key]["isSignStart"] == false){
_this.activeDataList[key]["isSignStart"] = true;
}
else{
_this.activeDataList[key]["signFinish"] = true;
} }
}
},1000); }
} }
</script>
vue实现数据遍历、多个倒计时列表的更多相关文章
- Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
文章目录 1.列表排序 1.1 .代码实例 1.2 .测试效果 1.3.需要掌握的前提知识 2.Vue监测数据变化的原理 2.1.代码实例 2.2 .测试效果 3.Vue检测数据的原理 3.1 基本知 ...
- 详解vue的数据binding原理
自从angular火了以后,各种mv*框架喷涌而出,angular虽然比较火,但是他的坑还是蛮多的,还有许多性能问题被人们吐槽.比如坑爹的脏检查机制,数据binding是受人喜爱的,脏检查就有点…性能 ...
- Vue之数据监听存在的问题
Vue之数据监听 当数据监听的是列表时,数据发生改变,不会被监听到. // 用$set修改数组中的数组能够被监听 // app.$set(this.hobby, 0, "爱你哦") ...
- Vue渲染数据理解以及Vue指令
一.Vue渲染数据原理 原生JS改变页面数据,必须要获取页面节点,也即是进行DOM操作,jQuery之类的框架只是简化DOM操作的写法,实质并没有改变操作页面数据的底层原理,DOM操作影响性能(导致浏 ...
- db2 将逗号分隔数据转换为多值IN列表
将逗号分隔数据转换为多值IN列表 2010-03-15 11:16:59| 分类: 数据库技术|举报|字号 订阅 下载LOFTER我的照片书 | 原文:http://book.cs ...
- 大数据学习[16]--使用scroll实现Elasticsearch数据遍历和深度分页[转]
题目:使用scroll实现Elasticsearch数据遍历和深度分页 作者:星爷 出处: http://lxWei.github.io/posts/%E4%BD%BF%E7%94%A8scroll% ...
- Vue的数据双向绑定和Object.defineProperty()
Vue是前端三大框架之一,也被很多人指责抄袭,说他的两个核心功能,一个数据双向绑定,一个组件化分别抄袭angular的数据双向绑定和react的组件化思想,咱们今天就不谈这种大是大非,当然我也没到达那 ...
- 原生js实现 vue的数据双向绑定
原生js实现一个简单的vue的数据双向绑定 vue是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时 ...
- Vue 监视数据总结 && 表单控件使用总结
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...
随机推荐
- Python连接操作数据库
步骤: 1.创建与数据库的连接对象: 2.创建游标: 3.通过游标执行语句 4.增删改需要提交(commit)数据 5.关闭连接 如: import MySQLdb # Python通过MySQL ...
- AspxDashBorad_OnDashboardLoaded 获取对应的DashboardParameter
protected void ASPxDashboardViewerThrend_OnDashboardLoaded(object sender, DashboardLoadedWebEventArg ...
- python3练习100题——015
原题链接:http://www.runoob.com/python/python-exercise-example15.html 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用 ...
- PyInstaller用法
pyinstaller定义:PyInstaller是一个压缩python文件成为可执行程序的一个软件. pyinstaller工作原理:① 它会扫描你所有的Python文档,并分析所有代码从而找出所有 ...
- python 日志模块 日志格式
形如: formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s","%Y%b%d-%H: ...
- webpack配置的说明
{devtool: 'source-map',//要启用source-map需加上此配置项,同时css或less的loader要加上参数?sourceMap,js的loader不用加 entry: e ...
- 每天进步一点点------ORCAD Capture CIS 快捷键
ORCAD Capture CIS 快捷键 I: 放大O: 缩小C: 以光标所指为新的窗口显示中心 W: 画线On/OffP: 快速放置元件R: 元件旋转90°H: 元件 ...
- STA之PVT
在STA星球,用library PVT.RC corner跟OCV来模拟这些不可控的随机因素.在每个工艺结点,通过大量的建模跟实测,针对每个具体的工艺,foundary厂都会提供一张推荐的timing ...
- Spring 事务归纳
Spring transaction 什么是事务 A用户向B用户转帐100,第一步要从A帐户扣出100,第二步要将B帐户加上100.其中无论是第一步失败,还是第二步失败.都应该将A.B帐户的余额保持和 ...
- VMware 搭建linux虚拟机环境
1.任务管理器-服务 确认VMware服务是否启动 2.VMware生成网关地址 编辑--虚拟网络编辑器 VMnet8 NAT设置子网IP,子网掩码,网关 3.windows网络--更改适配器设置-- ...