AngularJS 支付倒计时功能实现思路


Posted in Javascript onJune 05, 2017

说明:

1、前端只负责展示倒计时,不具备实际功能;

2、实际实现方式:数据库中设置一个每分钟执行一次的定时任务(故与实际情况会有一分钟以内的误差),只要订单创建时间超过15分钟会自动将订单状态改为“取消”。

遇到难点:

1、字符串转date中,苹果satari浏览器不支持“yyyy-mm-dd hh:mi:ss”格式,须将字符串转为“yyyy/mm/dd hh:mi:ss”

new Date($scope.order.createtime.replace(/\-/g, "/"))

2、AngularJS 对JavaScript自带的 定时任务window.setInterval 支持不完善,需使用其自有的方法 $interval

html相关代码(使用ionic框架):

<div ng-class="{true: 'payCountDown', false: ''}[payClass]" ng-bind="payCountDown"> 
</div>

js相关代码:

$scope.order = Storage.get("order");//order为后台传来的订单信息,里面包含订单创建时间 
  var createTime;//订单创建时间 
  var curTime;//当前时间 
  var totalSecond;//设置计时总时间(分钟) 
  if($scope.order.createtime !=null){ 
    //为了支持safari浏览器 
    createTime=new Date($scope.order.createtime.replace(/\-/g, "/")).getTime(); 
    curTime=new Date().getTime(); 
    totalSecond=Math.round((createTime+15*60*1000-curTime)/1000); 
  }else{ 
    totalSecond = 15 * 60;  
  } 
   
  /** 
   * 支付倒计时 
   */ 
  timePromise = $interval(function(){  
    if (totalSecond >= 0) { 
      var t1 = Math.floor(totalSecond / 60); 
      var m = t1 < 10 ? "0" + t1 : t1; 
      var t2 = totalSecond - t1 * 60; 
      var s = t2 < 10 ? "0" + t2 : t2; 
      totalSecond = totalSecond - 1; 
      $scope.payClass=true;//添加class 
      $scope.payCountDown="支付剩余时间:"+m+"分钟"+s+"秒" 
    } else { 
      $scope.confirmPay=true; 
      $scope.payClass=true;//添加class 
      $scope.payCountDown= "支付超时,请重新下单!"; 
      $interval.cancel(timePromise);//终止倒计时 
    } 
  },1000)

css代码:

.payCountDown{ 
  color:#FFFFFF; 
  background-color:red; 
  text-align:center; 
  padding:14px 0; 
  opacity:0.8 
}

运行效果:

AngularJS 支付倒计时功能实现思路

补充:

oracle定时任务代码:

begin 
 sys.dbms_job.submit(job => :job, 
           what => 'UpdateOrderStatues;', 
           next_date => to_date('05-06-2017 10:05:50', 'dd-mm-yyyy hh24:mi:ss'), 
           interval => 'sysdate +1/1440'); 
 commit; 
end; 
/

以上所述是小编给大家介绍的AngularJS 支付倒计时功能实现思路,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript实现tab响应式切换特效
Jan 29 Javascript
javascript事件的传播基础实例讲解(35)
Feb 14 Javascript
JS请求servlet功能示例
Jun 01 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 Javascript
详解http访问解析流程原理
Oct 18 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
详解vue2.0模拟后台json数据
May 16 Javascript
微信小程序使用echarts获取数据并生成折线图
Oct 16 Javascript
js计时事件实现圆形时钟
Mar 25 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 Javascript
JavaScript如何判断对象有某属性
Jul 03 Javascript
10分钟学会js处理json的常用方法
Dec 06 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 #Javascript
Vue2.0实现购物车功能
Jun 05 #Javascript
bootstrap multiselect 多选功能实现方法
Jun 05 #Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 #Javascript
详解Angular 4 表单快速入门
Jun 05 #Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 #Javascript
Node.js开发第三方微信公众平台
Jun 05 #Javascript
You might like
PHP的cURL库简介及使用示例
2015/02/06 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python实现字典的key和values的交换
2015/08/04 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python插件机制实现详解
2020/05/04 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
十一个高级MySql面试题
2014/10/06 面试题
网络优化专员求职信
2014/05/04 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
安全生产隐患排查制度
2015/08/05 职场文书