Выпущена версия динамической формы form-create 2.5, которая поможет вам легко получить форму
Form-create — это компонент генерации форм, который может генерировать функции динамического рендеринга, сбора данных, проверки и отправки через JSON. Он поддерживает три фреймворка пользовательского интерфейса и поддерживает создание любого компонента Vue. Встроено 20 видов общих компонентов формы и пользовательских компонентов, а затем можно легко создавать сложные формы.
Поддержка пользовательского интерфейса
- элемент интерфейса
- iview/view-дизайн
- муравей-дизайн-вью
Новые возможности
Версия 2.5 в основном обновляет следующие функции:
- Рефакторинг внутреннего кода ядра
- Оптимизация внутреннего механизма рендеринга
- Оптимизация внутренних событий жизненного цикла
- Рефакторинг машинописного текста
- Добавьте метод `nextTick` для установки обратного вызова после рендеринга.
- Новая поддержка компонента загрузки страниц для ускорения рендеринга первого экрана.
- Добавить настраиваемый элемент конфигурации `эффект`
- Добавить поддержку изменения `типа`
- Добавьте `control` для поддержки места вставки правил конфигурации.
- «Управление» оптимизацией вступит в силу, если оно соответствует условиям. Предыдущая версия может вступить в силу только в том случае, если она является первой.
- Добавить поддержку для настройки префиксов и суффиксов для компонентов
- Добавить конфигурацию `update`, запускаемую после того, как `value` отправляет изменения
- Добавить поддержку элемента конфигурации `wrap`, настроить `FormItem`
- Добавить компонент `object`
- Добавлена поддержка пользовательских компонентов title, info.
- Добавить компонент форматированного текста `wangEditor`
- Добавить встроенную поддержку событий для поддержки событий
- Поддержка `value.sync` для получения двусторонней привязки `formData`
- Оптимизация кнопки отправки формы по умолчанию
Установить
Установите соответствующую версию в соответствии с используемым вами пользовательским интерфейсом.
версия элемента пользовательского интерфейса
npm i @form-create/element-ui
[email protected]|версия 3.x
npm i @form-create/iview
версия iview/[email protected]
npm i @form-create/iview4
версия [email protected]+
npm i @form-create/ant-design-vue
Быстрый старт
В этой статье в качестве примера используется `element-ui`.
- Напишите в main.js следующее:
import Vue from 'vue' import ELEMENT from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import formCreate from '@form-create/element-ui' Vue.use(ELEMENT) Vue.use(formCreate)
2. Создать форму
"пример"
<template> <div id="app1"> <form-create v-model="fApi" :rule="rule" :option="option" :value.sync="value"></form-create> </div> </template> <script> export default { data() { return { fApi: {}, value: {}, rule: [ { type: 'input', field: 'goods_name', title: 'goods_name' }, { type: 'datePicker', field: 'created_at', title: 'created_at' } ], option: { onSubmit: function (formData) { alert(JSON.stringify(formData)) } } } } } </script>
Функции
1. Пользовательский компонент
Form-create поддерживает создание любых компонентов vue внутри формы.
"пример"
Например, чтобы сгенерировать компонент `el-button`:
{ //type can be the name of a built-in component, or the name of a vue component or an html tag type: 'el-button', //... children: ['content'] }
Примечание! Сгенерированные компоненты должны быть смонтированы глобально или через form-create
Монтировать через Vue
Vue.component(component.name, component);
Монтировать через form-create
formCreate.component(component.name, component);
2. Пользовательский макет
Расположение компонентов может быть достигнуто путем установки элементов конфигурации `col` или компонентов сетки.
"пример"
Установите макет компонента через элемент конфигурации `col`, установите строку для отображения двух компонентов.
[ { type:'input', field:'input1', title:'input1', col:{span:12} },{ type:'input', field:'input2', title:'input2', col:{span:12} }, ]
Отображение трех компонентов в одной строке с помощью настроек компонента сетки
{ type:'el-row', children: [ { type:'el-col', props:{ span:8 }, children: [{type:'input',field:'input1',title:'input1'}] }, { type:'el-col', props:{ span:8 }, children: [{type:'input',field:'input1',title:'input1'}] }, { type:'el-col', props:{ span:8 }, children: [{type:'input',field:'input1',title:'input1'}] } ] }
3. Суффиксы компонентов
Настройте префикс компонента, создав атрибут префикса правила и атрибут суффикса для настройки суффикса компонента.
"пример"
{ type:'input', field:'text', title:'text', prefix:'prefix', suffix:'suffix', }
Установите префикс и суффикс в качестве пользовательского компонента
{ type:'input', field:'text', title:'text', value:'default', prefix:{ type:'ElButton', children:['prefix'] }, suffix:{ type:'ElButton', children:['suffix'] }, }
Введение в API
Обычно используются следующие методы
Установить значение формы
Метод переопределения, неопределенные поля будут установлены в `null`
```typescript type coverValue = (formData:{[field:string]:any}) => void ``` //Using: ```js fApi.coverValue({goods_name:'HuaWei'}) ``` //Merging method, undefined fields are not modified ```typescript interface setValue { (formData:{[field:string]:any}): void (field:string, value:any): void } ``` //Using: ```js fApi.setValue({goods_name:'HuaWei'}) ``` //Alias method`changeValue`, `changeField`
Скрытые поля
```typescript interface hidden { //Hide all components (status:Boolean):void //Hide specified components (status:Boolean, field:string):void //Hide some components (status:Boolean, field:string[]):void } ``` //Using: ```js fApi.hidden(true, 'goods_name') ```
Получить скрытое состояние компонента
```typescript type hiddenStatus = (field:string)=>Boolean ``` //Using: ```js const status = fApi.hiddenStatus('goods_name') ```
Вставить правило
Предварительная установка
```typescript interface prepend { //Insert to the first (rule:FormRule):void //Insert before the specified field (rule:FormRule, field:string):void //Insert into the specified field children (rule:FormRule, field:string, child:true):void } ``` //Using: ```js fApi.prepend({ type:"input", title:"info", field:"goods_info", value:"", props: { "type": "text", "placeholder": "placeholder", }, validate:[ { required: true, message: 'required', trigger: 'blur' }, ], }, 'goods-name') ```
Добавление постскриптума
```typescript interface append { //Insert to the last (rule:FormRule):void //Insert after the specified field (rule:FormRule, field:string):void //Insert into the specified field children (rule:FormRule, field:string, child:true):void } ``` //Using: ```js fApi.append({ type:"input", title:"info", field:"goods_info", value:"", props: { "type": "text", "placeholder": "placeholder", }, validate:[ { required: true, message: 'required', trigger: 'blur' }, ], }, 'goods-name') ```
Проверить форму
```typescript type validate = (callback:(...args:any[]) => void)=> void ``` //Using: ```js fApi.validate((valid, fail) => { if(valid){ //todo success }else{ //todo fail } }) ```
Получить данные формы
```typescript interface formData { //Get all the data (): {[field:string]:any } //Get the data of some fields (field:string[]): {[field:string]:any } } ``` //Using: ```js const formData = fApi.formData() ```
Отправить форму
```typescript type submit = (success: (formData: FormData, $f: fApi) => void, fail: ($f: fApi) => void)=> void ``` //Using: ```js fApi.submit((formData, fapi) => { //todo Submit Form },()=>{ //todo Form validation failed }) ```