效果如图:

代码:

 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. 数据源(HikariCP)

    HikariCP 是一个高性能的 JDBC 连接池组件.下图是性能的比较测试结果: 自从看到了这张图,我就对于我之前一直在使用了 c3p0 产生了深深的怀疑,迫切的期望得到对应的数据来优化我的代码. ...

  2. [WPF打印]WPF 文档元素(Run TextBlock Paragraph)的文字对齐方式

    最近开发WPF程序,需要打印,用到了FlowDocument(这相当于有了打印模版,而且可以随时修改,真的是挺方便的).可是在输出表格形数据(这种情况恐怕是大多数~)时遇到了点儿麻烦. 由于Table ...

  3. 关于Json-lib类库的使用

    前言介绍: json-lib包是一个Java类库,它可以将Java对象(包括:beans,maps,collections,java arrays ,xml等)和JSON互相转换. 与此相同的是谷歌也 ...

  4. PHP上传原理及操作实现

    关于PHP上传文件的函数类库,网上有许多封装很完善,大家直接拿来用就可以. 本文章只是说下关于上传原理和简单的上传操作,老鸟就无视了哈^_^~ 还有一些安全性判断比如:服务端限制能接收图片类型的文件, ...

  5. 【ML】数据集资源

    http://www.kdnuggets.com/datasets/index.html http://kdd.ics.uci.edu/

  6. GitHub 二次验证收不到短信咋办?

    身在天朝,用了国外的代码托管服务,会有些烦恼的. 网速慢就不说了,如果启用了二次验证,短信收不到那就悲催了. 之前的都能收到短信的,突然间尝试了很多天都不行,联系github的客服,几次的答复如下: ...

  7. 总结的比较好的OpenGL教程

    OpenGL Programming Guide(红宝书) http://www.glprogramming.com/red/ OpenGL Reference Manual(蓝宝书) http:// ...

  8. iis重启的几种方法

    1. 通过“IIS管理器”重启在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”. 2.通过“控制面板”-&g ...

  9. 深入理解css3中的flex-grow、flex-shrink、flex-basis

    https://www.cnblogs.com/ghfjj/p/6529733.html

  10. 【转】 Android定时器

    转载自:http://www.android-study.com/pingtaikaifa/508.html 在Android开发中,定时器一般有以下3种实现方法: 一.采用Handler与线程的sl ...