angular2倒计时组件使用详解


Posted in Javascript onJanuary 12, 2017

项目中遇到倒计时需求,考虑到以后在其他模块也会用到,就自己封装了一个组件。便于以后复用。

组件需求如下:
- 接收父级组件传递截止日期
- 接收父级组件传递标题

组件效果

angular2倒计时组件使用详解

变量

angular2倒计时组件使用详解

组件countdown.html代码

<div class="count-down">
  <div class="title">
    <h4>
      {{title}}
    </h4>
  </div>
  <div class="body">
    <div class="content">
      <div class="top">
        {{hour}}
      </div>
      <div class="bottom">
        小时
      </div>
    </div>
    <div class="content">
      <div class="top">
        {{minute}}
      </div>
      <div class="bottom">
        分钟
      </div>
    </div>
    <div class="content">
      <div class="top">
        {{second}}
      </div>
      <div class="bottom">
        秒
      </div>
    </div>
  </div>
</div>

组件countdown.scss代码

.count-down{
  width:100%;
  height:100px;
  background: rgba(0,0,0,0.5);
  padding: 2px 0;
  .body{
    margin-top: 8px;
    .content{
      width:29%;
      float: left;
      margin: 0 2%;
      .top{
        font-size: 20px;;
        line-height: 30px;
        color: black;
        background: white;
        border-bottom: 2px solid black;
      }
      .bottom{
        font-size: 14px;
        line-height: 20px;
        background: grey;
      }
    }
  }
}

组件countdown.component.ts代码

import { Component, OnInit, Input, OnDestroy, AfterViewInit } from '@angular/core';

@Component({
 selector: 'roy-countdown',
 templateUrl: './countdown.component.html',
 styleUrls: ['./countdown.component.scss']
})
export class CountdownComponent implements AfterViewInit, OnDestroy {
 // 父组件传递截止日期
 @Input() endDate: number;
 // 父组件传递标题
 @Input() title: string;
 // 小时差
 private hour: number;
 // 分钟差
 private minute: number;
 // 秒数差
 private second: number;
 // 时间差
 private _diff: number;
 private get diff() {
  return this._diff;
 }
 private set diff(val) {
  this._diff = Math.floor(val / 1000);
  this.hour = Math.floor(this._diff / 3600);
  this.minute = Math.floor((this._diff % 3600) / 60);
  this.second = (this._diff % 3600) % 60;
 }
 // 定时器
 private timer;

 // 每一秒更新时间差
 ngAfterViewInit() {
  this.timer = setInterval(() => {
   this.diff = this.endDate - Date.now();
  }, 1000);
 }

 // 销毁组件时清除定时器
 ngOnDestroy() {
  if (this.timer) {
   clearInterval(this.timer);
  }
 }
}

使用方法demo.html

<roy-countdown title="距离考试还有:" [endDate]="endDate"></roy-countdown>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS实现悬浮移动窗口(悬浮广告)的特效
Mar 12 Javascript
JS记录用户登录次数实现代码
Jan 15 Javascript
Javascript中的apply()方法浅析
Mar 15 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
Apr 12 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
vue的token刷新处理的方法
Jul 17 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
使用Vue 自定义文件选择器组件的实例代码
Mar 04 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 #Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 #Javascript
js中常用的Math方法总结
Jan 12 #Javascript
Vue数据驱动模拟实现4
Jan 12 #Javascript
移动端点击态处理的三种实现方式
Jan 12 #Javascript
js手机号批量滚动抽奖实现代码
Apr 17 #Javascript
js图片轮播手动切换特效
Jan 12 #Javascript
You might like
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python中的协程深入理解
2019/06/10 Python
python实现函数极小值
2019/07/10 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
软件测试常见笔试题
2012/02/04 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
网站美工岗位职责
2014/04/02 职场文书
合同补充协议书
2016/03/24 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技