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 ...
随机推荐
- SpringBoot和SpringCloud配置
1.基本配置 #项目名称(访问路径) server.context-path=/manager #端口 server.port=8764 #session过期时间 server.sessionTime ...
- 在Android平台下搭建PhoneGap开发环境--用HTML5开发游戏
一.在Android平台下搭建PhoneGap开发环境具体怎么搭建我这里就不详细说了,如有需要我后面再讲 . PhoneGap 官方地址有详细说明:http://www.phonegap.com. 在 ...
- GetDlgItem的用法小结
GetDlgItem用于获得指定控件ID的窗体指针,函数原型如下: HWND GetDlgItem( HWND hDlg, int nIDDlgItem ); CWnd* GetDlgItem(int ...
- ng-bind-html-unsafe的替代
angular 1.2以后(或更早?)移除了ng-bind-html-unsafe,那么我要用这个directive来绑定html代码怎么办?随便一测试,它是不支持把html直接传给它的: //htm ...
- koa项目用mongoose与mongodb交互,始终报错FormModel is not defined
koa项目用mongoose与mongodb交互,始终报错FormModel is not defined,就是自己定义的model实例始终不能找到,但是明明定义了,这时候就要看大小写了,当创建一个m ...
- 续:纠正:ubuntu 【6.04 LTS】可以安装安装 ! for《Oracle-10.2.0.1,打补丁10.2.0.5:在 debian 版本4【不含4】以上,及 ubuntu 7.04【不含7.04】以上都可以安装!》
经过长时间的试错.探索,终于查明无法顺利安装oracle10g的原因,并且找到顺利安装的方式. 要点: 无法安装的根本原因有2: 1:libc6-dev的版本为2.23-0ubuntu10,其中的cr ...
- Python 程序员都会喜欢的 6 个库
在编程时,小挫折可能与大难题一样令人痛苦.没人希望在费劲心思之后,只是做到弹出消息窗口或是快速写入数据库.因此,程序员都会喜欢那些能够快速处理这些问题,同时长远来看也很健壮的解决方案. 下面这6个Py ...
- Linux中/etc/resolv.conf文件简析
https://blog.csdn.net/lcr_happy/article/details/54867510
- Python 和C#的交互
IronPython是一个.NET平台上的Python实现,包括了完整的编译器.执行引擎与运行时支持,能够与.NET已有的库无缝整合到一起. IronPython已经很好的集成到了.NET frame ...
- java okhttp包的类特点
1.开始使用这个包时候不习惯,觉得api用起来很别扭,不管是Request okhttpClient formBody只要是设置啥,就必须使用类里面的Builder类,然后一个方法接受一个参数,不停地 ...