vue 简单分页组件

<template>
  <!-- Pagination -->
  <ul class="actions pagination">
    <li><h3>T:<span class="red">{{totalElements}}</span> P:<span class="red">{{totalPages}}</span> N:<span class="red">{{pageCur}}</span></h3></li>
    <li><a href="" class=" button small first" :class="{'disabled':pageCur===1}" @click.prevent="paging(1)">首页</a></li>
    <li><a href="" class=" button small previous" :class="{'disabled':pageCur===1}"  @click.prevent="paging(pageCur-1)">上一页</a></li>
    <li><a href="#"  class="button small next" :class="{'disabled':pageCur===totalPages}" @click.prevent="paging(pageCur+1)">下一页</a></li>
    <li><a href="#" class="button small last" :class="{'disabled':pageCur===totalPages}" @click.prevent="paging(totalPages)">尾页</a></li>
    <li><input type="text" class="input"  v-model.number="nextCur" @change="checkNextCur()"/><a href="#" class="button small go-btn" @click.prevent="goPage()">GO</a></li>
  </ul>
</template>

<script type="text/ecmascript-6">
  export default {
    data() {
      return {
        pageCur:1,
        nextCur:2
      }
    },
    components: {},
    props:{
      totalElements:{
        type:Number,
        default:0,
      },
      totalPages:{
        type:Number,
        default:0,
      },

    },
    created(){
    },
    methods:{
      paging(pageCur){
        if(pageCur<1){
          this.pageCur=1;
          return
        }
        if(pageCur>this.totalPages){
          this.pageCur=this.totalPages;
          return
        }
        this.pageCur=pageCur;
        this.$emit('setPageCur', this.pageCur);
        this.nextCur=this.pageCur+1;
        this.checkNextCur()
      },
      goPage(){
        this.pageCur=this.nextCur;
        this.$emit('setPageCur',  this.pageCur);
      },
      checkNextCur(){
        if(this.nextCur>this.totalPages){
          this.nextCur=this.totalPages
        }
      }
    }
  }
</script>

<style lang="scss" scoped>
  .pagination{
    margin: 0;
    li{
      margin-right:-0.5em;
      h3{
        margin-top: 10px;
        .red{
          color: red;
        }
      }
      &:first-child{
        min-width: 196px;
      }
      .input{
        width: 50px;
        text-align: center;
        display: inline-block;
      }
      .go-btn{
        width:58px;
        padding: 0 0 0 6px;
        text-align: center;
        height: 44px;
        line-height: 44px;
        position: relative;
        top: -2px;
        left: 1em;
      }
    }
  }
</style>

<pagination :totalElements="totalElements" :totalPages="totalPages"  @setPageCur="getPageCur"></pagination>
<script type="text/ecmascript-6">
  import pagination from "../pagination"
  export default {
    data() {
      return {
        totalElements:1602,
        totalPages:25,
      }
    },
    components: {
      pagination
    },
    methods:{
      getPageCur(pageCur){
        // alert(pageCur)
      }
    }
  }
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中封装分页组件的方法与Vue2有所不同。以下是一个基本的封装分页组件的方法: 1. 首先,在你的项目中创建一个名为`Pagination.vue`的组件文件。 2. 在`Pagination.vue`组件中,你可以使用`<template>`标签来定义组件的结构。可以使用`<div>`标签来包裹分页组件的内容,比如页码和按钮。 3. 在`<script>`标签中,你需要导入`vue`并声明组件。你可以使用`ref`来追踪当前页码,并且使用`computed`属性来计算总页数。 4. 在组件内部,你可以创建一个`methods`对象,并在其中定义一些方法来处理页码的变化。比如,你可以创建`goToPage`方法来跳转到指定的页码。 5. 最后,在`<style>`标签中,你可以定义组件的样式,如页码的颜色和按钮的样式。 在你的项目中使用这个封装的分页组件的方法如下: 1. 在需要使用分页功能的组件中,使用`import`关键字导入刚刚封装的`Pagination`组件。 2. 在`components`属性中注册`Pagination`组件。 3. 在`<template>`标签中使用自定义的分页组件。可以使用`v-model`指令来双向绑定当前页码。 通过上述步骤,你就可以在Vue3中封装一个分页组件并在项目中使用了。这个组件可以提供分页功能,让用户可以方便地切换页码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于Vue如何封装分页组件](https://download.csdn.net/download/weixin_38550605/12789728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue3 element-ui实现Pagination分页组件--封装分页](https://blog.csdn.net/coinisi_li/article/details/128952886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值