Skip to content

常见问题


表单项(select、radioGroup等)的“option”是异步数据,如何处理?

通过配置request选项,参考代码:

ts
{
  label: '角色',
  value: '',
  name: 'roleIdList',
  type: 'select',
  request: () => { 
    return getRoleList({ 
      pageSize: -1, 
    }).then((res: any) => { 
      return res.rows.map((item: any) => { 
        return { 
          value: item.id, 
          label: item.name 
        } 
      }) 
    }) 
  } 
}

表单项如何插槽?

通过配置slots选项,参考代码:

TIP

slots的数据结构是[{ name: string, alias: string }],之所以设计成这样的结构而不是字符串数组是为了防止插槽重名,比如有多个输入框,都有prepend插槽,就可以通过设置别名(alias)来区分

ts
{
  label: '角色',
  type: 'input',
  ...,
  slots: [ 
    {
      name: 'prepend', 
      alias: 'prepend'
    }, 
    {
      name: 'append', 
      alias: 'append'
    } 
  ] 
},
{
  label: '角色',
  type: 'input',
  ...,
  slots: [ 
    {
      name: 'prepend', 
      alias: 'prepend1'
    }, 
    {
      name: 'append', 
      alias: 'append1'
    } 
  ] 
}
vue
<pro-form>
  <template #prepend>test</template>
  <template #append>test</template>
  <template #prepend1>test</template>
  <template #append1>test</template>
</pro-form>