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 相关文章推荐
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
一个JQuery写的点击上下滚动的小例子
Aug 27 Javascript
js实现精美的图片跟随鼠标效果实例
May 16 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
Aug 24 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
基于AngularJS实现的工资计算器实例
Jun 16 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
Dec 13 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
Apr 03 Javascript
vue登录注册实例详解
Sep 14 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中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
python通过文件头判断文件类型
2015/10/30 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python目录和文件处理总结详解
2019/09/02 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
关于VPN
2012/06/10 面试题
跟单文员岗位职责
2014/01/03 职场文书
学生自我评价范文
2014/02/02 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python