zoukankan      html  css  js  c++  java
  • 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>  
  • 相关阅读:
    程序员职业规划
    SSH框架优缺点
    Servlet的生命周期,并说出Servlet和CGI的区别,Servlet与JSP的区别
    什么是J2EE,包括哪些规范!
    JS中定义类的方法
    audio.js – 随时随地,播放 HTML5 的声音
    jquery面试题里 缓存问题如何解决?
    产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
    JAVA排序算法
    java面试题中常见的关于String类问题总结
  • 原文地址:https://www.cnblogs.com/fashe8888/p/11176463.html
Copyright © 2011-2022 走看看