在使用avue表单时,若想在表单中进行数据请求时,可以使用下面的方法:
{ label: "补贴类型", prop: "sub_type_msg", search: true, type: "select", dicUrl: "/admin/hadoop/not_auth/subType", dicMethod: "post", props: { label: "value", value: "key" }, filterable: true //开启搜索功能 }
完整示例:
<avue-form :option="option" v-model="obj"></avue-form> <script> var baseUrl = 'https://cli.avuejs.com/api/area' export default { data() { return { obj: { province:'',//绑定的prop值 }, option: { labelWidth: 100, column: [ { label: '单选', prop: 'province', type: 'select', props: { label: 'name', value: 'code' }, typeslot: true, dicUrl: `${baseUrl}/getProvince`, dicMethod: "post", typeformat(item, label, value) { return `值:${item[label]}-名:${item[value]}` }, rules: [ { required: true, message: '请选择省份', trigger: 'blur' } ] } ] } } }, methods:{ handleSubmit(form){ this.$message.success(JSON.stringify(this.form)) } } } </script>
提示:
(1)dicUrl: `${baseUrl}/getCity/{ {key}}`,若需要传参数,可以直接进行拼接
(2)如果是post请求,需要传递多个参数,就只能单独写一个事件,调用接口,进行赋值。要注意的是,如果是嵌套在表格中的请求,有时页面数据可能不会更新,此时可以使用getSelectOption()方法,具体如下:
getSelectOption() { console.log(this.$refs.crud); var stallIndex =this.findObject(this.table.option.column,'stall_id'); console.log(stallIndex); this.$axios({ method: "post", url: "/admin/merchant/water_log/getStallList" }) .then(res => { console.log(res); stallIndex.dicData = DIC.STALL =res.data; }) .catch(error => {}); },