vue+iview分页组件的封装


Posted in Vue.js onNovember 17, 2020

vue+iview的分页组件封装

1.在components中创建pagination文件夹,接着创建src,index.js,index.less文件

2.index.less文件

//需要修改的样式
.ivu-page-options {
 margin-left: 10px;

 .ivu-page-options-sizer {
  margin-right: 0;
 }
 }

3.index.js文件

import "./index.less";
import component from "./src/main";

/* istanbul ignore next */
component.install = function (Vue) {
 Vue.component(component.name, component);
};

export default component;

4.src文件夹中的main.vue

<template>
 <!-- 分页组件 -->
 <Page
 class="saas-pagination"
 ref="page"
 :loading="loading"
 :disabled="disabled"
 :total="total"
 :show-sizer="sizer"
 :show-elevator="elevator"
 :current="params.page"
 :page-size="params.rows"
 :page-size-opts="sizeOpts"
 @on-change="currentChange"
 @on-page-size-change="pageChange"/>
</template>

<script>
export default {
 props: {
 loading: {
  type: Boolean,
  default: false
 },
 total: {
  // 数据总数
  type: [String, Number],
  default: 0
 },
 page: {
  // 当前分页
  type: [String, Number],
  default: 1
 },
 rows: {
  // 每页显示多少条
  type: [String, Number],
  default: 10
 },
 disabled: {
  type: Boolean,
  default: false
 },
 sizer: {
  // 是否显示下拉组件
  type: Boolean,
  default: false
 },
 elevator: {
  // 是否显示跳转输入框
  type: Boolean,
  default: false
 }
 },
 watch: {
 page (to) {
  this.params.page = to;
 },

 rows (to) {
  this.params.rows = to;
 }
 },
 data () {
 return {
  sizeOpts: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
  params: {
  page: 1,
  rows: 10
  }
 }
 },
 methods: {
 // 分页改变
 currentChange (current) {
  this.params.page = current;
  this.onChange();
 },
 // 每页显示条数改变
 pageChange (rows) {
  this.params.page = 1;
  this.params.rows = rows;
  this.onChange();
 },

 onChange () {
  this.$emit("on-change", JSON.parse(JSON.stringify(this.params)));
 },

 reset () {
  this.params = {
  page: 1,
  rows: 10
  }
  this.onChange();
  // 当前页码还原
  // this.$refs.page.currentPage = 1;
 }
 }
}
</script>

5.在components中创建index.js,用于全局引入

import GlobalPage from "@/components/pagination/index.js";
export default (Vue) => {
 Vue.component("GlobalPage ", GlobalPage );
}

6然后在全局的main.js引入,可全局使用

import components from "@/components/index.js";
Vue.use(components)

7.组件的使用

<template>
 <div>
  <global-page 
  ref="pagination"
  :sizer="true"
  :page="formData.page"
  :rows="formData.rows"
  :total="total"
  @on-change="pageChange">
  </global-page>
 </div>
</template>
<script>
export default {
 data(){
 return {
  total: 0, // 数据总数
  queryForm:{},
  formData: {
   page: 1,
   rows: 10,
  }
  }
 },
 methods: {
  // 分页切换
 pageChange (params) {
  this.queryForm.page = params.page
  this.queryForm.rows = params.rows
  //查询数据的方法
  this.search(this.queryForm)
 },
 }
}

</script>

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

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

Vue.js 相关文章推荐
Vue用mixin合并重复代码的实现
Nov 27 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
详解Vue的七种传值方式
Feb 08 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
vue+flask实现视频合成功能(拖拽上传)
Mar 04 Vue.js
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
vue中音频wavesurfer.js的使用方法
Feb 20 #Vue.js
vue使用vant中的checkbox实现全选功能
Nov 17 #Vue.js
vue+vant实现购物车全选和反选功能
Nov 17 #Vue.js
在vue中通过render函数给子组件设置ref操作
Nov 17 #Vue.js
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 #Vue.js
vue+iview实现分页及查询功能
Nov 17 #Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 #Vue.js
You might like
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
Python range与enumerate函数区别解析
2020/02/28 Python
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
学生就业推荐信
2013/11/13 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
卫生安全检查制度
2014/02/04 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
党校培训学习心得体会
2016/01/06 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
MySql分区类型及创建分区的方法
2022/04/13 MySQL