最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue自定義表單生成器form-create使用詳解

 更新時(shí)間:2019年07月19日 08:52:03   作者:返回主頁 xaboy  
這篇文章主要介紹了vue自定義表單生成器,可根據(jù)json參數(shù)動(dòng)態(tài)生成表單,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

介紹

form-create 是一個(gè)可以通過 JSON 生成具有動(dòng)態(tài)渲染、數(shù)據(jù)收集、驗(yàn)證和提交功能的表單生成器。并且支持生成任何 Vue 組件。結(jié)合內(nèi)置17種常用表單組件和自定義組件,再復(fù)雜的表單都可以輕松搞定。

文檔 | github

演示項(xiàng)目: 開源的高品質(zhì)微信商城

功能

  • 自定義組件
    • 可生成任何Vue組件
    • 自帶數(shù)據(jù)驗(yàn)證
    • 輕松轉(zhuǎn)換為表單組件
  • 通過 JSON 生成表單
  • 通過 Maker 生成表單
  • 強(qiáng)大的API,可快速操作表單
  • 雙向數(shù)據(jù)綁定
  • 事件擴(kuò)展
  • 局部更新
  • 數(shù)據(jù)驗(yàn)證
  • 柵格布局
  • 內(nèi)置組件17種常用表單組件

對比 1.x

  • 速度更快
  • 體積更小
  • 更強(qiáng)大的全局配置
  • 自定義組件更容易擴(kuò)展
  • 更容易支持第三方 UI 庫
  • 更少的 bug

示例

通過 JSON 創(chuàng)建表單

通過 API 操作表單

@form-create包說明

名稱 說明
@form-create/iview iview 版表單生成器
@form-create/element-ui element-ui 版表單生成器
@form-create/core form-create 核心包
@form-create/utils form-create 工具包
@form-create/data 省市區(qū)多級聯(lián)動(dòng)數(shù)據(jù)

使用

以element-ui版本為例介紹如何在項(xiàng)目中使用 form-create

安裝

npm i @form-create/element-ui

掛載

全局注冊

局部掛載

import formCreate form '@form-create/element-ui';

export default {
  components:{
    formCreate:formCreaet.$form()
  }
}

生成表單

<template>
  <form-create v-model="$f" :rule="rule" @on-submit="onSubmit"></form-create>
</template>
export default {
 data () {
  return {
   //表單實(shí)例對象
   $f:{},
   //表單生成規(guī)則
   rule:[
    {
     type:'input',
     field:'goods_name',
     title:'商品名稱'
    },
    {
     type:'datePicker',
     field:'created_at',
     title:'創(chuàng)建時(shí)間'
    }
   ]
  };
 },
 methods:{
   onSubmit(formData){
     //TODO 提交表單
   }
 }
};

效果

實(shí)例對象 $f

可以通過 $f 快速操作表單,例如:

  • $f.hidden:隱藏指定組件
  • $f.validate:驗(yàn)證表單
  • $f.setValue:修改表單組件的值
  • $f.append:追加表單組件

自定義組件

生成

通過標(biāo)簽生成

{
  type:'el-button',
  name: 'btn',
  props:{
    type:'primary',
    field:'btn',
    loading:true
  },
  children:['加載中']
}

通過模板生成

{
  type:'template',
  name:'btn'
  template:'<el-button :loading="loading">{{text}}<el-button>',
  vm: new Vue({
   data:{
    loading:true,
    text:'加載中'
   }
  })
}

轉(zhuǎn)換為表單組件

自定義組件轉(zhuǎn)換為表單組件后,可通過$f.formData,$f.getValue,$f.setValue,$f.disabled等方法快速操作組件,達(dá)到和內(nèi)置組件相同的效果

預(yù)定義

props

在自定義組件內(nèi)部通過props接收一下屬性

  • value 表單的值
  • disabled 組件的禁用狀態(tài)

例如:

vm = Vue({
 props:{
  value:String,
  disabled:Boolean   
 }
})

input 事件

通過input事件更新組件內(nèi)部的值

當(dāng)組件值發(fā)生變化后,通過 input 事件更新值.例如:

vm.$emit('input',newValue);

掛載自定義組件

要生成的自定義組件必須通過Vue.component方法掛載到全局,或者通過formCreate.component方法掛載

例如:

formCreate.component('TestComponent',component);

或者

Vue.component('TestComponent',component);

生成

表單組件必須定義field屬性

JSON

{
  type:'TestComponent',
  value:'test',
  field:'testField',
  title:'自定義組件'
}

Maker

formCreate.maker.create('TestComponent','testField','自定義組件').value('test')

示例

自定義計(jì)數(shù)器按鈕組件,獲取按鈕點(diǎn)擊數(shù).該組件的功能和內(nèi)置組件相同

formCreate.maker.template('<el-button @click="onClick" long :disabled="disabled">計(jì)數(shù)器-{{num}}</el-button>', new Vue({
 props:{
  //預(yù)定義
  disabled:Boolean,
  value:Number,
 },
 data: function () {
  return {
    num: this.value,
  }
 },
 watch:{
  value(n){
    this.num = n;
  }
 },
 methods: {
  onClick: function () {
    this.num++;
    //更新組件內(nèi)部的值
    this.$emit('input',this.num);
  },
 },
}), 'tmp', '自定義 title').value(100).props('disabled',false)

完整示例

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Vue3中偵聽器watch的使用教程

    詳解Vue3中偵聽器watch的使用教程

    學(xué)過 vue2 的小伙伴們肯定學(xué)習(xí)過偵聽器,主要是用來監(jiān)聽頁面數(shù)據(jù)或者是路由的變化,來執(zhí)行相應(yīng)的操作,在 vue3里面呢,也有偵聽器的用法,功能基本一樣,本文就來為大家詳細(xì)講講
    2022-07-07
  • vue-router中query和params的區(qū)別解析

    vue-router中query和params的區(qū)別解析

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用,這篇文章主要介紹了vue-router中query和params的區(qū)別 ,需要的朋友可以參考下
    2022-10-10
  • vue3+Naive?UI數(shù)據(jù)表格基本使用方式詳解

    vue3+Naive?UI數(shù)據(jù)表格基本使用方式詳解

    這篇文章主要給大家介紹了關(guān)于vue3+Naive?UI數(shù)據(jù)表格基本使用方式詳?shù)南嚓P(guān)資料,Naive?UI是一個(gè)基于Typescript開發(fā)的針對Vue3開發(fā)的UI組件庫,由TuSimple(圖森未來)公司開發(fā)并開源,需要的朋友可以參考下
    2023-08-08
  • Vue.native如何將原生事件綁定到組件

    Vue.native如何將原生事件綁定到組件

    這篇文章主要介紹了Vue.native如何將原生事件綁定到組件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)

    vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘Combin

    這篇文章主要介紹了vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • JointJS流程圖的繪制方法

    JointJS流程圖的繪制方法

    這篇文章主要為大家介紹了JointJS流程圖的繪制方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • vue2使用el-tag實(shí)現(xiàn)自定義菜單導(dǎo)航標(biāo)簽

    vue2使用el-tag實(shí)現(xiàn)自定義菜單導(dǎo)航標(biāo)簽

    這篇文章主要為大家詳細(xì)介紹了vue2如何使用el-tag實(shí)現(xiàn)自定義菜單導(dǎo)航標(biāo)簽,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 深入理解vue-class-component源碼閱讀

    深入理解vue-class-component源碼閱讀

    這篇文章主要介紹了深入理解vue-class-component源碼閱讀,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Vue之Watcher源碼解析(1)

    Vue之Watcher源碼解析(1)

    這篇文章主要為大家詳細(xì)介紹了Vue源碼之Watcher的基礎(chǔ)知識,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue實(shí)現(xiàn)指令式動(dòng)態(tài)追加小球動(dòng)畫組件的步驟

    Vue實(shí)現(xiàn)指令式動(dòng)態(tài)追加小球動(dòng)畫組件的步驟

    這篇文章主要介紹了Vue實(shí)現(xiàn)指令式動(dòng)態(tài)追加小球動(dòng)畫組件的步驟,幫助大家更好的理解和實(shí)用vue,感興趣的朋友可以了解下
    2020-12-12

最新評論

亚东县| 洪湖市| 手游| 安仁县| 黄石市| 凤凰县| 都兰县| 临城县| 双流县| SHOW| 苏尼特左旗| 湘乡市| 金阳县| 抚松县| 永年县| 和平区| 晋城| 怀来县| 科尔| 宁乡县| 新安县| 巫山县| 黔西县| 海口市| 德化县| 沙雅县| 邵阳市| 麻栗坡县| 临颍县| 天长市| 名山县| 双牌县| 静宁县| 太湖县| 隆德县| 遂川县| 桂林市| 泾阳县| 邵武市| 利津县| 永城市|