sencha touch 简单的倒计时插件
效果如图:

代码:
Ext.define('ux.label.Countdown', {
alternateClassName: 'labelCountdown',
extend: 'Ext.Component',
xtype: 'labelCountdown',
config: {
baseCls: Ext.baseCSSPrefix + 'label',
format: 'Y-m-d H:i:s',
value: null
},
initialize: function () {
this.callParent();
this.on({
hide: 'stop',
scope: this
});
},
stop: function () {
console.log('停止计时');
clearInterval(this.task);
this.isStart = false;
},
start: function () {
var me = this;
if (!me.isStart && me.time) {
console.log('开始计时');
me.isStart = true;
me.task = setInterval(function () {
me.timing(me);
},1000);
me.timing(me);
}
},
updateValue: function (time,old) {
//console.log(time);
var me = this;
if (time) {
time = Ext.Date.parse(time, me.getFormat());
if (time) {
me.time = time;
me.start();
}
}
},
timing: function (me) {
if (!me.time) {
clearInterval(me.task);
console.log('停止计时');
} else {
var now = new Date(),
ms = me.time - now,
//计算出开始时间和现在时间的时间戳差
day = Math.floor(ms / (1000 * 60 * 60 * 24)),
//天数
hour = Math.floor(ms / (1000 * 60 * 60)) % 24,
//小时
minute = Math.floor(ms / (1000 * 60)) % 60,
//分钟
second = Math.floor(ms / 1000) % 60,
//秒
label;
if (ms > 0) {
console.log('正在计时');
if (day > 0) {
label = util.format('剩余{0}天{1}小时{2}分{3}秒', day, hour, minute, second);
} else if (hour > 0) {
label = util.format('剩余{0}小时{1}分{2}秒', hour, minute, second);
} else if (minute > 0) {
label = util.format('剩余{0}分{1}秒', minute, second);
} else if (second >= 0) {
label = util.format('剩余{0}秒', second);
}
me.setHtml(label);
} else {
console.log('计时结束');
me.setHtml('已结束');
me.fireEvent('end', me);
clearInterval(me.task);
}
}
}
});
使用:
xtype: 'labelCountdown',
//format默认格式
format: 'Y-m-d H:i:s',
//这里需要和上面的format对应,否则无法转换成时间,其他参数和lable相同
value: '2014-01-01 23:21:45'
注意根据情况调用start和stop方法,以免陷入无限循环
sencha touch 简单的倒计时插件的更多相关文章
- sencha touch 类的使用
sencha touch 有一套自己的类机制,可以以面向对象的方式去写代码,封装业务逻辑,sencha touch 的组件.插件.api等都建立在这一套类机制的上面 在实际开发中,我们需要遵循这一套机 ...
- 动端逐渐出了许多的移动端的框架,比如Sencha Touch、JQTouch、Jquery-moblie、jqMobi等等。这些框架都有优缺点,不同的框架应用在不同的项目中。现简单阐述一下各框架的优缺点:
移动前端工作的那些事---前端制作之微信小技巧篇 (2013-11-15 15:20) 转载▼ 标签: it css3/javascript html5 webapp 手机网站搭建 分类: 前端制 ...
- [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容
原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cord ...
- sencha touch 2.2 为list PullRefresh插件添加refreshFn方法
sencha touch 2.2 list PullRefresh插件没有refreshFn方法 但是我们又需要他,所以需要自行扩展 代码如下 /** * 重写下拉刷新插件,以支持refreshFn事 ...
- SenCha Touch 与 EXTJS 安装Myeclipse 插件
http://www.cnblogs.com/jirimutu01/default.html 关于SenchaEclipsePlugin插件的安装和使用 使用过eclipse开发java程序的人都知道 ...
- [Phonegap+Sencha Touch] 移动开发76 让cordova app訪问远端站点也能调用cordova插件功能
原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50735395 我相信.应该会有一些cordova开发人员想过实现以下这种app: 使用 ...
- sencha touch的开源插件和例子
写了好久的sencha touch,没想到换工作竟然一年多没有搞了.因为项目的缘故收集了好多的组件,由于懒惰,没有整理,现在想想有点后悔了,再加上如果就这样丢弃,感觉有些遗憾,今天整理了一下放在git ...
- js 简单倒计时插件和使用方法
// 倒计时插件 (function (){ function countdown(config){ var startDate = config.start ? new Date(config.st ...
- 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP
参考博文: [Phonegap+Sencha Touch] 移动开发1.准备工作 [Phonegap+Sencha Touch] 移动开发2.PhoneGap/Cordova初步使用 经过差不多1 ...
随机推荐
- 数据源(HikariCP)
HikariCP 是一个高性能的 JDBC 连接池组件.下图是性能的比较测试结果: 自从看到了这张图,我就对于我之前一直在使用了 c3p0 产生了深深的怀疑,迫切的期望得到对应的数据来优化我的代码. ...
- [WPF打印]WPF 文档元素(Run TextBlock Paragraph)的文字对齐方式
最近开发WPF程序,需要打印,用到了FlowDocument(这相当于有了打印模版,而且可以随时修改,真的是挺方便的).可是在输出表格形数据(这种情况恐怕是大多数~)时遇到了点儿麻烦. 由于Table ...
- 关于Json-lib类库的使用
前言介绍: json-lib包是一个Java类库,它可以将Java对象(包括:beans,maps,collections,java arrays ,xml等)和JSON互相转换. 与此相同的是谷歌也 ...
- PHP上传原理及操作实现
关于PHP上传文件的函数类库,网上有许多封装很完善,大家直接拿来用就可以. 本文章只是说下关于上传原理和简单的上传操作,老鸟就无视了哈^_^~ 还有一些安全性判断比如:服务端限制能接收图片类型的文件, ...
- 【ML】数据集资源
http://www.kdnuggets.com/datasets/index.html http://kdd.ics.uci.edu/
- GitHub 二次验证收不到短信咋办?
身在天朝,用了国外的代码托管服务,会有些烦恼的. 网速慢就不说了,如果启用了二次验证,短信收不到那就悲催了. 之前的都能收到短信的,突然间尝试了很多天都不行,联系github的客服,几次的答复如下: ...
- 总结的比较好的OpenGL教程
OpenGL Programming Guide(红宝书) http://www.glprogramming.com/red/ OpenGL Reference Manual(蓝宝书) http:// ...
- iis重启的几种方法
1. 通过“IIS管理器”重启在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”. 2.通过“控制面板”-&g ...
- 深入理解css3中的flex-grow、flex-shrink、flex-basis
https://www.cnblogs.com/ghfjj/p/6529733.html
- 【转】 Android定时器
转载自:http://www.android-study.com/pingtaikaifa/508.html 在Android开发中,定时器一般有以下3种实现方法: 一.采用Handler与线程的sl ...