1. 程式人生 > 其它 >ant-design裡用Form(v-decorator)和FormModel(v-model)

ant-design裡用Form(v-decorator)和FormModel(v-model)

繼續更新 用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.$nextTick(() => {
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'
      )
    )
  })