openfext / vue-form-builder

Build powerful vue form with JSON schema and composition api.
https://openfext.github.io/vue-form-builder
MIT License
386 stars 45 forks source link

config 中 rules 和 elements 为什么不分开传入?elements 为什么是数组? #5

Closed hidumou closed 5 years ago

hidumou commented 5 years ago

config 中 rules 和 elements 为什么不分开传入?

rules 本身会预先配置,elements会存在二次操作。比如 select、radio、checkbox中的数据可能会异步获取。

elements 为什么是数组?

个人觉得应该设计成对象,方便之后修改数据。 伪代码

  <e-form
        v-model="formValues"
        :fields="fields"
        :rules="rules"/>
      // 绑定字段
      formValues: {
        title: '',
        area: '',
       },
      // 字段配置
      fields: {
        title: {
          label: '标题',
        },
        area: {
          tag: 'el-radio',
          label: '地区',
          items: []
        },
      },
      // 字段校验
      rules: {
        title: { required: true, message: 'qdddd' }
      }
     // fetch data
     this.delay(2000).then(() => {
        const area = [
          { text: '西安', label: 2019 },
          { text: '杭州', label: 2018 },
          { text: '上海', label: 2017 }]

        this.fields.area.items = area
        this.formValues.area = area[0].label

      })
felixpy commented 5 years ago

本插件开发之初,主要用于提前配置好 JSON Config 的场景。若有修改配置的需求,可以基于此组件,封装一个支持你所需数据格式的 Wrapper 组件,通过计算属性传递给 FormBuilder。感谢你的反馈!