基于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了项目又刚好需要一个分页的功能.于是百度发现几篇文章介绍的实在方式有点复杂, 没耐心看自己动手造轮子写了 ...
随机推荐
- 瀑布流布局使用详解——JQuery插件Isotope(动态实现子项目筛选)
瀑布流布局,听起来听牛逼的样子,其实就是简单的子元素筛选功能.不过这一功能在网站页面布局当中还是很常用的,特别是在电商网站中 经常会有点一个钮筛选,然后页面的子元素刷的以下变了样.接下来,我们先简单介 ...
- Java调用IDL方法总结
Java调用IDL方法总结 Java调用IDL程序,需要先在java中加载IDL的java包(javaidlb.jar),该包不需要下载,在IDL的安装目录中可以直接找到(C:\Program Fil ...
- (中级篇 NettyNIO编解码开发)第七章-java序列化
相信大多数Java程序员接触到的第一种序列化或者编解码技术就是.Java的默认序列化,只需要序列化的POJO对象实现java.io.Serializable接口,根据实际情况生成序列ID,这个类就能够 ...
- Mac主机映射到域名
1, control+space 打开spotlight, 搜索"终端" 2, 打开终端 3, 在"终端"界面中输入: sudo vi /etc/hosts ...
- 模仿ICE的structured panorama小按钮
这个按钮的目的是用于手动排列图片序列,应该说写得比较精巧,我使用csharp进行模仿,主要采用的是自动控件创建技术.结果比较简陋,实现功能而已,放出来大家一起学习. ; ; ...
- 项目管理之 使用 appledoc 生成开发文档
写项目时通常会遇到要求写开发文档的需求,但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.Objective-C 有一些文档管理工具,doxygen, headdoc 和 apple ...
- JAVA POI 应用系列(2)--读取Excel
添加maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi< ...
- java学习——平台的安装与部署
Java 平台安装与部署 jre,jdk安装与部署 1)jre,jdk安装过程(略) 2)部署过程 新建(JAVA_HOME) 变量名:JAVA_HOME 变量值:E:\Program Files ( ...
- MySql俩种分页区别(注意)
注意俩个分页的区别哦~ SELECT * FROM city LIMIT 2 OFFSET 1; 从第二条记录开始 取二条记录 如下: SELECT * FROM city LIMIT 3,2; 从第 ...
- [UWP]用Shape做动画
相对于WPF/Silverlight,UWP的动画系统可以说有大幅提高,不过本文无意深入讨论这些动画API,本文将介绍使用Shape做一些进度.等待方面的动画,除此之外也会介绍一些相关技巧. 1. 使 ...