效果如图:

代码:

 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 简单的倒计时插件的更多相关文章

  1. sencha touch 类的使用

    sencha touch 有一套自己的类机制,可以以面向对象的方式去写代码,封装业务逻辑,sencha touch 的组件.插件.api等都建立在这一套类机制的上面 在实际开发中,我们需要遵循这一套机 ...

  2. 动端逐渐出了许多的移动端的框架,比如Sencha Touch、JQTouch、Jquery-moblie、jqMobi等等。这些框架都有优缺点,不同的框架应用在不同的项目中。现简单阐述一下各框架的优缺点:

    移动前端工作的那些事---前端制作之微信小技巧篇   (2013-11-15 15:20) 转载▼ 标签: it css3/javascript html5 webapp 手机网站搭建 分类: 前端制 ...

  3. [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cord ...

  4. sencha touch 2.2 为list PullRefresh插件添加refreshFn方法

    sencha touch 2.2 list PullRefresh插件没有refreshFn方法 但是我们又需要他,所以需要自行扩展 代码如下 /** * 重写下拉刷新插件,以支持refreshFn事 ...

  5. SenCha Touch 与 EXTJS 安装Myeclipse 插件

    http://www.cnblogs.com/jirimutu01/default.html 关于SenchaEclipsePlugin插件的安装和使用 使用过eclipse开发java程序的人都知道 ...

  6. [Phonegap+Sencha Touch] 移动开发76 让cordova app訪问远端站点也能调用cordova插件功能

    原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50735395 我相信.应该会有一些cordova开发人员想过实现以下这种app: 使用 ...

  7. sencha touch的开源插件和例子

    写了好久的sencha touch,没想到换工作竟然一年多没有搞了.因为项目的缘故收集了好多的组件,由于懒惰,没有整理,现在想想有点后悔了,再加上如果就这样丢弃,感觉有些遗憾,今天整理了一下放在git ...

  8. js 简单倒计时插件和使用方法

    // 倒计时插件 (function (){ function countdown(config){ var startDate = config.start ? new Date(config.st ...

  9. 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP

    参考博文: [Phonegap+Sencha Touch] 移动开发1.准备工作 [Phonegap+Sencha Touch] 移动开发2.PhoneGap/Cordova初步使用   经过差不多1 ...

随机推荐

  1. SpringBoot和SpringCloud配置

    1.基本配置 #项目名称(访问路径) server.context-path=/manager #端口 server.port=8764 #session过期时间 server.sessionTime ...

  2. 在Android平台下搭建PhoneGap开发环境--用HTML5开发游戏

    一.在Android平台下搭建PhoneGap开发环境具体怎么搭建我这里就不详细说了,如有需要我后面再讲 . PhoneGap 官方地址有详细说明:http://www.phonegap.com. 在 ...

  3. GetDlgItem的用法小结

    GetDlgItem用于获得指定控件ID的窗体指针,函数原型如下: HWND GetDlgItem( HWND hDlg, int nIDDlgItem ); CWnd* GetDlgItem(int ...

  4. ng-bind-html-unsafe的替代

    angular 1.2以后(或更早?)移除了ng-bind-html-unsafe,那么我要用这个directive来绑定html代码怎么办?随便一测试,它是不支持把html直接传给它的: //htm ...

  5. koa项目用mongoose与mongodb交互,始终报错FormModel is not defined

    koa项目用mongoose与mongodb交互,始终报错FormModel is not defined,就是自己定义的model实例始终不能找到,但是明明定义了,这时候就要看大小写了,当创建一个m ...

  6. 续:纠正: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 ...

  7. Python 程序员都会喜欢的 6 个库

    在编程时,小挫折可能与大难题一样令人痛苦.没人希望在费劲心思之后,只是做到弹出消息窗口或是快速写入数据库.因此,程序员都会喜欢那些能够快速处理这些问题,同时长远来看也很健壮的解决方案. 下面这6个Py ...

  8. Linux中/etc/resolv.conf文件简析

    https://blog.csdn.net/lcr_happy/article/details/54867510

  9. Python 和C#的交互

    IronPython是一个.NET平台上的Python实现,包括了完整的编译器.执行引擎与运行时支持,能够与.NET已有的库无缝整合到一起. IronPython已经很好的集成到了.NET frame ...

  10. java okhttp包的类特点

    1.开始使用这个包时候不习惯,觉得api用起来很别扭,不管是Request okhttpClient formBody只要是设置啥,就必须使用类里面的Builder类,然后一个方法接受一个参数,不停地 ...