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的数据类型检测
Jul 10 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
浅谈js 闭包引起的内存泄露问题
Jun 22 Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 Javascript
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
浅谈开发eslint规则
Oct 01 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 Javascript
vuex(vue状态管理)的特殊应用案例分享
Mar 03 Javascript
vue+django实现下载文件的示例
Mar 24 Vue.js
解决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+SqlServer实现分页显示
2006/10/09 PHP
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
Python代码调试的几种方法总结
2015/04/15 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
简单实现python聊天程序
2018/04/01 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python递归实现打印多重列表代码
2020/02/27 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
银行优秀员工事迹
2014/02/06 职场文书
会计求职信
2014/05/29 职场文书
公司门卫工作职责
2014/06/28 职场文书
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript