iview+vue查詢分頁實現


本文為實戰坑記錄

子組件(共用的搜索組件)

<template>
    <div>
    <h2>{{pdbTitle}}</h2>   <Form ref="searchform" :model="applysearchData" :label-width="120" inline> <FormItem :label="labelName.srch1" prop="id"> <i-input v-model="applysearchData.id"/> </FormItem>         // 注意:特意寫一下這個select組件         // 這個地方select status選項要在搜索的時候對綁定的值進行特殊處理(重置為 ''),不然在搜索的時候會是undefined         <FormItem :label="labelName.srch2" prop="status"> <Select v-model="applysearchData.status"> <Option value="100">a</Option> <Option value="200">b</Option> <Option value="300">c</Option> </Select> </FormItem>        <FormItem>          <Button @click="searchInfo('searchform')">查詢</Button>          <Button @click="handleReset('searchform')">清除條件</Button>        </FormItem/> </Form> </div> </template> <script> export default {
     // 接收父組件傳遞過來的搜索參數 props:{
       pdbTitle:{
         type:String
       }, applysearchData:{ type:Object } }, watch:{         
// 注意:seletct組件的status值為undefined的時候需要把它重置為空字符串,這樣搜索的時候才會成功         // 因為此處的表單的值為父組件傳遞過來的,所以要在父組件中去修改status 'applysearchData.status'(newValue,oldValue){ if(newValue === undefined){ this.$emit('changeStatus') } },        // 在切換頁碼的時候監聽查詢表單數據的變化,如果有變化需要把current重置為1 applysearchData:{ handler(a,b){ if(a){ this.$emit('changeCurrent') } }, deep:true } }, methods:{         // 搜索 searchInfo(applysearchform){ this.$emit('searchInfo'); },         // 重置,注意這里也要觸發一下修改status的方法 handleReset(applysearchform){ this.$refs[applysearchform].resetFields(); this.$emit('changeStatus') } } } </script>

父組件:

<template>
   <search-form :pdbTitle="pdbTitle" :labelName="labelName" @searchInfo="searchInfo" :applysearchData="applysearchData" @changeStatus="changeStatus" @changeCurrent="changeCurrent"></search-form>
    <Page :total="searchPages.total" :current="searchPages.current" :page-size="searchPages.size" show-elevator show-total @on-change="initChangePage"/>
   <Table :loading="loading" border :columns="columns" :data="tableData"/>
</template>    
<script>
import searchFrom from './searchForm'
export default {
  components:{
    searchForm
  },
  data(){
    return {
      columns:[....],
      pdbTitle:'信息2',
      // 搜索表單的數據
      applysearchData:{
         id:'',
         status:'' // 為select的值,根據需求也可以給一個默認值
      },
      tableData:[],
      searchPages:{
        size:5,
        total:0,
        current:1
      }
    }
  },
  created(){
    this.searchInfo()
  },
  methods:{
     initChangePage(val){
       this.searchPages.current = val
     },
     changeCurrent(){ // 關鍵點,把當前也設置為1
        this.searchPages.current = 1
     },
     changeStatus(){  // 關鍵點,處理status
        this.applysearchData.status = ''
     },
     searchInfo(){
        // 發送請求獲取數據
      } 
  }
}
</script>  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM