ant-design裡用Form(v-decorator)和FormModel(v-model)
阿新 • • 發佈:2020-12-31
繼續更新 用ant-design 的踩坑記錄。。
Form 和 FormModel
近在用ant design vue 做專案 遇到了 一下坑 比如 v-decorator 可以做資料 繫結 與v-model 不同的是 給 form 表單賦值
v-model 的值是 雙向繫結的
如果想 給改變 v-model的值 直接賦值 即可 比較 方便
而 v-decorator 個人認為 有點 麻煩
如果 你想 改變 v-decorator 中繫結的值
Form
如上圖 需要用到 this.form.setFieldsValue({}) 方法 其中 nachineName 就是繫結的值 如下圖
以此方法 就可以 給 v-decorator 繫結的值賦值 了
最後你可能 想問 如何檢視獲取 from 中繫結的表單資料 呢 ,那麼它來了
如上圖 this.form.validateFields 方法就可以獲取表單裡的值 此時 列印的 values 就是 當前form表單裡的全部 資料 了
最後想說的是想使用 以上方法 必須對 form 先進行註冊 方法如下
pick的應用
甚至 如果多個值的話可以這樣設定 使用pick,因為引數真的挺多的
1:需要先在data內定義 model: {} 物件,後面使用model設定,而且需要匯入lodash的pick函式
this.form.resetFields();
this.model = Object.assign({}, this.record);
this.form.setFieldsValue(pick(this.model, ‘,name’, ‘age’))
});
2:這裡的 Object.assign()等於是深拷貝賦值物件,record是我拿到的需要設定進文字框的值,這裡的pick參考lodash的pick。(連結:https://blog.csdn.net/a18792627168/article/details/108199498) 3:重點是這幾個,this.$nextTick可以看這篇。(https://blog.csdn.net/a18792627168/article/details/107924724) 4:這個方式等於是將值統一放在 model這個物件內,然後將你需要設定進去的值,通過pick從this.model內選擇得到,最後通過this.form.setFieldsValue(); 設定進去即可。
this.$nextTick(() => {
this.form.setFieldsValue(
pick(
this.model,
'projectId',
'projectNo',
'projectName',
'prjCode',
'overhaulTime',
'overhaulPerson',
'overhaulPersonFullname',
'remark',
'attachment',
'supervisor',
'supervisorFullname',
'inputName',
'inputFullname',
'inputPhone',
'inputDepartment',
'inputDepartmentFullname',
'inputDate',
'inputername',
'inputerfullname',
'notifymethod'
)
)
})