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
}
})
)
}
})
},
}