el-table中的嵌套el-tab-pane嵌套el-table 设置dataRules解决记录(el-table中的el-table-column嵌套input)

el-table中的嵌套el-tab-pane嵌套el-table 设置dataRules解决记录

 

 

 

 

嵌套关系如下:
el-table
|----el-tab-panel
|--------el-table
|------------el-table-column

按照网上别人的方法,设置dataRules,发现不行。如果把prop改成planMap,dataRules中也设置相应的rule,能校验了,但是不管输入啥,都是报错,还有这个字段名就是name,不可能改后端返回的字段把。
这里采用手动加上校验的方法。
先写一个span,调一下样式


自己写一个校验函数

 

 

 

 

 

 

 


在表单提交的时候也加上校验,如果检测到数据中有name字段为空,那么就置位nameValid,下面也不会通过,效果:
点击确认提交表单的时候,如果发现有没填的,会弹出:

 

 方法2:

引入elementUI省略,自行查看文档。
html部分

        <el-cascader
            placeholder="请选择地点"
            :props="adressProps"
            v-model="adressArray"
          />

js部分

  data() {
    return {
      adressProps: {
        lazy: true,   //可以理解为开关,什么时候结束
        lazyLoad: this.cascaderLazyLoad, 
      },
      adressArray: null,  
      province: '',
      city: '',
    }
  },
  methods: {
     cascaderLazyLoad(node, resolve) {
       if (!node) {  
           return false
       }
      const { level } = node
      //level代表当前点击选择哪一项,,比如0代表第一次进去加载数据,1是选择省后的操作
      if (level == 1) {
        this.province = node.value   //选择省后对数据进行存储,因为要用省去查询市
      } else if (level == 2) {
        this.city = node.value    //同上要去查询区
      }
      let params = {
        province: this.province,
        city: this.city,
      }
      getAdress(params).then((res) => {   //换成你的接口方法
        if (res.code === '0') {
          resolve(
            res.data.map((val) => {
              return {
                value: val,
                label: val,
                leaf: level >= 2,  //因为省市区三项,所以第三次点击就不用在加载了,所以 >=2
              }
            })
          )
        }
      })
    },
  }
posted @ 2022-03-02 13:41  前端白雪  阅读(2181)  评论(0)    收藏  举报