基于angular4.0分页组件
分页组件一般只某个页面的一小部分,所以我们它是子组件
- 当然如果你承认这话的,可以往下看,因为我把他当作子组建来写了
分页组件的模版
import { Component } from '@angular/core';
@Component({
selector : "page",
template :`
<div class="page ellipsis">
<ul class="pagination" *ngIf="pageList">
<li><a href="#" aria-label="Previous" class="prev"><span aria-hidden="true">«</span></a></li>
<li *ngFor="let list of pageList"><a href="#">{{ list.pageid }}</a></li>
<li (click)="Tomessage( icur+1 )"><a href="#" aria-label="Next" class="next"><span aria-hidden="true">»</span></a></li>
</ul>
</div>
`,
styleUrls: ['./page.css'] //css样式就是bootstrap的那个
})
export class PageComponent {}
在组件中生成 pageList = []; 模拟数据
//数据结构如下
pageList = [
{
pageid: number = 1
}
{
pageid: number = 2
}
]
//生成pageList的数组
getPageList () {
//console.log(this.pageParams)
let total = 150;
let size = 10;
let icur = this.icur; //当前页码
let num = Math.ceil( total / size )
for ( var i = 0 ; i< num ;i++ ) {
if(num <= 5){
this.pageList.push({
pageid : i+1,
pageicur :icur
})
}else if( num - icur < 5 && icur > 4){
this.pageList = [
{
pageid: icur - 4,
pageicur :icur
}, {
pageid: icur - 3,
pageicur :icur
}, {
pageid: icur - 2,
pageicur :icur
}, {
pageid: icur - 1,
pageicur :icur
}, {
pageid: icur,
pageicur :icur
}
];
}else{
let cur = Math.floor((icur - 1) / 5) * 5 + 1
this.pageList = [
{
pageid: cur ,
pageicur :icur
}, {
pageid: cur + 1,
pageicur :icur
}, {
pageid: cur + 2,
pageicur :icur
}, {
pageid: cur + 3,
pageicur :icur
}, {
pageid: cur + 4,
pageicur :icur
}
]
}
}
}
引入 装饰器Output 时间发射器EventEmitter 钩子函数的一种状态OnInit
//如下所示
import { Component, Output, EventEmitter, OnInit } from '@angular/core';
- 此时模版的结构---就变成这个样子了
import { Component, Output, EventEmitter, OnInit } from '@angular/core';
@Component({
selector : "page",
template :`
//....
`,
styleUrls: ['./page.css'] //css样式就是bootstrap的那个
})
export class PageComponent implements OnInit{
//这个数据应该是一步获得的
private pageList = [];
private icur = 1; //这里是私有变量
//组件初始化的时候调用该函数
ngOnInit(): void {
this.getPageList();
}
//分页函数
getPageList () {
//.....
}
}
此时组件的基本结构都有了,然后创建一个父组件
import { Component } from '@angular/core';
import { PageComponent } from "./son.component"; //别忘记在父组建中导入了
@Component({
selector: 'app-root',
template: `
<page> </page>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
}
至此到这一步,应该可以看到一个效果图
! [page图] (http://images.cnblogs.com/cnblogs_com/he-zhi/1004820/o_2.png)
当然,现在这种东西很明显没有什么乱用,点击向上的话,就需要将icur这个值不断的增加
- 此时就需要设计到子组件---> 父组件之间的通讯
//需要一些什么东西呢 --这个装饰器@Output h还有事件发射器EventEmitter
//PageComponent 中导入所需要的动西
import { Component, Output, EventEmitter, OnInit } from '@angular/core';
//第二步---实例化一个发射器
@Output() OnChange: EventEmitter<string> = new EventEmitter();
//注册一个事件,点击的时候出发
Tomessage(value: any){
this.OnChange.emit( value )
this.icur = value;
}
//第三步需要到父组建中帮顶OnChange
//AppComponent
import { Component } from '@angular/core';
import { PageComponent } from "./son.component"; //别忘记在父组建中导入了
@Component({
selector: 'app-root',
template: `
<page (OnChange)="any($num)"> </page> //这里有一$千万不能省略
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
any(num:any){
alert(num);
}
}
至此所有的注意点 基本标注了,以下是分页组件的全部完整demo
如果你想跑起来,你需要先使用 angular的脚手架创建一个项目结构
基本赋值黏贴就可以了,
关于子组建到---父组建的通讯,感觉太简单 就没有细说
子组建发射 --- 父组建接受
import { Component, Output, EventEmitter, OnInit } from '@angular/core';
@Component({
selector : "page",
template :`
<div class="page ellipsis">
<ul class="pagination" *ngIf="pageList">
<li><a href="#" aria-label="Previous" class="prev"><span aria-hidden="true">«</span></a></li>
<li *ngFor="let list of pageList"><a href="#">{{ list.pageid }}</a></li>
<li (click)="Tomessage( icur+1 )"><a href="#" aria-label="Next" class="next"><span aria-hidden="true">»</span></a></li>
</ul>
</div>
`,
styleUrls: ['./page.css'] //css样式就是bootstrap的那个
})
export class PageComponent implements OnInit{
@Output() OnChange: EventEmitter<string> = new EventEmitter();
Tomessage(value: any){
this.OnChange.emit( value )
this.icur = value;
}
//这个数据应该是一步获得的
pageList = [];
icur = 1; //这里是全局变量
ngOnInit(): void {
this.getPageList();
}
//分页函数
getPageList () {
//console.log(this.pageParams)
let total = 150;
let size = 10;
let icur = this.icur; //当前页码
let num = Math.ceil( total / size )
for ( var i = 0 ; i< num ;i++ ) {
if(num <= 5){
this.pageList.push({
pageid : i+1,
pageicur :icur
})
}else if( num - icur < 5 && icur > 4){
this.pageList = [
{
pageid: icur - 4,
pageicur :icur
}, {
pageid: icur - 3,
pageicur :icur
}, {
pageid: icur - 2,
pageicur :icur
}, {
pageid: icur - 1,
pageicur :icur
}, {
pageid: icur,
pageicur :icur
}
];
}else{
let cur = Math.floor((icur - 1) / 5) * 5 + 1
this.pageList = [
{
pageid: cur ,
pageicur :icur
}, {
pageid: cur + 1,
pageicur :icur
}, {
pageid: cur + 2,
pageicur :icur
}, {
pageid: cur + 3,
pageicur :icur
}, {
pageid: cur + 4,
pageicur :icur
}
]
}
}
}
}
基于angular4.0分页组件的更多相关文章
- 基于Vue封装分页组件
使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} ...
- 基于vue2.0前端组件库element中 el-form表单 自定义验证填坑
eleme写的基于vue2.0的前端组件库: http://element.eleme.io 我在平时使用过程中,遇到的问题. 自定义表单验证出坑: 1: validate/resetFields 未 ...
- vue2.0分页组件,
pagination.vue <!-- 表格分页组件 --> <template> <nav class="boot-nav"> <ul ...
- 超简单的vue2.0分页组件
1.组件代码 <template> <div class="pagination_comment_style" style="width: 100%;o ...
- 基于bootstrap的分页组件-Bootstrap Paginator
效果
- 基于 bootstrap 的 vue 分页组件
申手党点这里下载示例 基于 bootstrap 的 vue 分页组件,我想会有那么一部分同学,在使用Vue的时候不使用单文件组件,因为不架设 NodeJS 服务端.那么网上流传的 *.vue 的各种分 ...
- Vue+element UI实现分页组件
介绍 这是一个是基于element-UI的分页组件基础上,进行了二次封装的分页组件,在展示数据时,该分页组件采用了每显示一页数据,只请求当前页面的数据的请求策略,从而避免了一次性将数据全部请求所造成的 ...
- 基于vue2.0的分页组件开发
今天安排的任务是写基于vue2.0的分页组件,好吧,我一开始是觉得超级简单的,但是越写越写不出来,写的最后乱七八糟的都不知道下句该写什么了,所以重新捋了思路,小结一下- 首先写组件需要考虑: 要从父组 ...
- 基于vue2.0的一个分页组件
分页组件在项目中经常要用到之前一直都是在网上找些jq的控件来用(逃..),最近几个项目用上vue了项目又刚好需要一个分页的功能.于是百度发现几篇文章介绍的实在方式有点复杂, 没耐心看自己动手造轮子写了 ...
随机推荐
- C#总结(三)DataGridView增加全选列
最近的一个winform的项目中,碰到datagridview控件的第一列添加全选的功能,通常这个功能,有两种实现方式:1. 为控件添加DataGridViewCheckBoxColumn来实现,但是 ...
- 读书笔记系列01-《收获、不止Oracle》
读书笔记系列01-<收获.不止Oracle> 最近计划将看过的Oracle书籍依次系统的总结下读书笔记. 这本书是我个人觉得写的最有趣的Oracle书籍,也是我接触Oracle后第一本完全 ...
- 第 8 章 MySQL 数据库 Query 的优化
前言: 在之前“影响 MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query语句对数据库性能的影响非常大,所以本章将专门针对 MySQL 的 Query 语句的优化进行相应的分析. ...
- 025 hibernate悲观锁、乐观锁
Hibernate谈到悲观锁.乐观锁,就要谈到数据库的并发问题,数据库的隔离级别越高它的并发性就越差 并发性:当前系统进行了序列化后,当前读取数据后,别人查询不了,看不了.称为并发性不好 数据库隔离级 ...
- 详细介绍php中的命名空间
php命名空间的一个最明确的作用是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.上一章节介绍了什么是php命名空间.php官网已很明确的进行了定义并形象化解释,这 ...
- R笔记(1):formula和Formula
#####开一个新的系列.关于R的一些笔记,就是遇到过的一些问题的简单整理.可能很基本,也可能没什么大的用处,作为一个记录而已.------------------------------------ ...
- 数据挖掘应用案例:RFM模型分析与客户细分(转)
正好刚帮某电信行业完成一个数据挖掘工作,其中的RFM模型还是有一定代表性,就再把数据挖掘RFM模型的建模思路细节与大家分享一下吧!手机充值业务是一项主要电信业务形式,客户的充值行为记录正好满足RFM模 ...
- 关于STM32 IAP
转眼间天亮了...... 然后就想起了一个朋友QQ的个性签名:年轻人总是要为一些自己认为有意义的事情而废寝忘食,通宵达旦,直至白发方休........ 对了这篇文章一定会介绍的很详细,请细嚼慢咽... ...
- (原创)用Java实现链表结构对象:单向无环链表
转载请注明本文出处:http://www.cnblogs.com/Starshot/p/6918569.html 链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起.而单向链表就是: ...
- nodejs零基础详细教程1:安装+基础概念
第一章 建议学习时间2小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...