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 相关文章推荐
一些有用的JavaScript和jQuery的片段分享
Aug 23 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 Javascript
JS生成不重复的随机数组的简单实例
Jul 10 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
如何提高javascript加载速度
Dec 26 Javascript
vue 路由页面之间实现用手指进行滑动的方法
Feb 23 Javascript
微信小程序实现滴滴导航tab切换效果
Jul 24 Javascript
Element input树型下拉框的实现代码
Dec 21 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 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
十天学会php(3)
2006/10/09 PHP
php whois查询API制作方法
2011/06/23 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
javascript 打印页面代码
2009/03/24 Javascript
javascript中的作用域scope介绍
2010/12/28 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
js实现tab切换效果
2017/02/16 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
Vuex 入门教程
2018/01/10 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
python判断字符串是否纯数字的方法
2014/11/19 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
python字典排序的方法
2019/10/12 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
火车的故事教学反思
2014/02/11 职场文书
开业庆典主持词
2014/03/21 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
如何撰写创业策划书
2019/06/27 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
Vue接口封装的完整步骤记录
2021/05/14 Vue.js