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

vue可視化表單設(shè)計器自定義組件使用方法

 更新時間:2023年12月13日 09:59:26   作者:屋昂仼  
Vue前端開發(fā)中表單組件是排在前三的高頻使用的組件,下面這篇文章主要給大家介紹了關(guān)于vue可視化表單設(shè)計器自定義組件使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

有一款基于vue的可視化表單編輯器,直接雙擊或者拖拽組件,便可以創(chuàng)建一個表單,非常方便。今天為大家介紹這款編輯器:

官方地址:Variant Form - 可視化低代碼表單

github地址:https://github.com/vform666/variant-form

1.1界面圖片

1.如何使用?

兩種使用方法。

第一種,直接引用。正如github上所示,直接安裝整個插件使用。

1.1.1 安裝:

npm i vform-builds

1.1.2 項目中使用:

/ ******* 引入并全局注冊VForm組件  *******/
 
import Vue from 'vue'
import App from './App.vue'
 
import ElementUI from 'element-ui'  //引入element-ui庫
import VForm from 'vform-builds'  //引入VForm庫
 
import 'element-ui/lib/theme-chalk/index.css'  //引入element-ui樣式
import 'vform-builds/dist/VFormDesigner.css'  //引入VForm樣式
 
Vue.config.productionTip = false
 
Vue.use(ElementUI)  //全局注冊element-ui
Vue.use(VForm)  //全局注冊VForm(同時注冊了v-form-designer和v-form-render組件)
 
new Vue({
  render: h => h(App),
}).$mount('#app')

1.1.3 使用編輯組件

<template>
  <v-form-designer></v-form-designer>
</template>
 
<script>
  export default {
    data() {
      return {
      }
    }
  }
</script>
 
<style lang="scss">
body {
  margin: 0;  /* 如果頁面出現(xiàn)垂直滾動條,則加入此行CSS以消除之 */
}
</style>

1.1.4 使用渲染組件

<template>
  <div>
    <v-form-render :form-json="formJson" :form-data="formData" :option-data="optionData" ref="vFormRef">
    </v-form-render>
    <el-button type="primary" @click="submitForm">Submit</el-button>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        formJson: {"widgetList":[],"formConfig":{"labelWidth":80,"labelPosition":"left","size":"","labelAlign":"label-left-align","cssCode":"","customClass":"","functions":"","layoutType":"PC","onFormCreated":"","onFormMounted":"","onFormDataChange":""}},
        formData: {},
        optionData: {}
      }
    },
    methods: {
      submitForm() {
        this.$refs.vFormRef.getFormData().then(formData => {
          // Form Validation OK
          alert( JSON.stringify(formData) )
        }).catch(error => {
          // Form Validation failed
          this.$message.error(error)
        })
      }
    }
  }
</script>

如果,你的需求不需要定制,那么基本如上所示,就基本夠用了。

如果需要有一些自己的修改,那么需要獨立安裝所有的依賴。

1.2.1 獨立安裝依賴

 項目的依賴安裝完畢之后,我們對其進(jìn)行一些改造,去到所在的組件,該刪除的刪除,該隱藏的隱藏。如下:

1.2.2 使用注意

所有ui組件基于element-ui,可以在左側(cè)組件庫內(nèi)雙擊圖標(biāo)或者鼠標(biāo)拖拽至中間畫布區(qū)域,完成布局和字段的填寫。

2.自定義組件,擴(kuò)展組件?

自帶的組件已經(jīng)很全了。但是架不住變態(tài)需求。比如,要求我們增加一個圖片組件。這時候,只能自己根據(jù)其內(nèi)部機(jī)制進(jìn)行擴(kuò)展了。

2.1 找到項目中 extension 文件夾 新建組件

新建一個image的文件夾,里邊新增一個 image-widget.vue的組件。

注意,由于他的解析都是按照 xx-widget 這個形式去找組件的,所以必須以‘-widget’結(jié)尾命名。

2.2 定義這個圖片組件的字段

所有的字段在項目中都有對應(yīng),需要看對應(yīng)關(guān)系的需要到 如下文件中去查看:

我們還是先打開extension中的 extension-schema.js ,在里邊最下方增加如下代碼(增加的是這個圖片組件的字段,用于屬性的編輯和組件的渲染),

// extension-schema.js ******* 新增圖片 字段
export const imageSchema = {
    type: 'image',
    icon: 'picture-upload-field',
    formItemFlag: true,
    options: {
        name: '',
        label: '',
        labelAlign: '',
        labelWidth: null,
        defaultValue: './sign.jpg',
        imageWidth: '100',
        imageHeight: '100',
        labelHidden: false,
        customClass: '',
    }
}

2.3 注冊新增組件

新增了組件需要注冊這個組件,否則未來就不能渲染。

同樣在extension文件夾下找到extension-loader.js 文件,在最上方引用組件字段和組件,然后在下方注冊組件,并指定組件屬性的編輯器,

// extension-loader.js
 
// 首先引入圖片組件和圖片組件的定義的字段
import {imageSchema} from "@/extension/samples/extension-schema"
import ImageWidget from '@/extension/samples/image/image-widget'
 
......
 
 
 
 
// 然后在最后組件 ‘/* 字段組件加載完畢 end */' 之前 注冊我們寫好的圖片組件
 
/** 注冊自定義圖片組件 */
  addCustomWidgetSchema(imageSchema)  //加載組件 Json Schema
  Vue.component(ImageWidget.name, ImageWidget)  //注冊組件
 
  // 這段代碼的意思是  如果組件的字段中出現(xiàn) ‘imageWidth' 這個屬性的時候,那么需要
  // 加載 image-editor 這個屬性編輯組件
  // 這個組件怎么寫  我們下邊再說
  PERegister.registerCPEditor('imageWidth', 'image-editor',
      PEFactory.createInputTextEditor('imageWidth', 'extension.setting.imageWidth'))

2.4 新增組件的中英文對照

因為這個項目用到了i18n國際化,所以需要添加中英文對照。

找打lang文件夾,找到如下文件

 分別添加字段:

// us js
export default {
  extension: {
    widgetLabel: {
      card: 'Card',
      alert: 'Alert',
      // 新增的字段  
      image: 'Image'
    },
    setting: {
      cardFolded: 'Folded',
      cardShowFold: 'Show Fold',
      cardWidth: 'Width Of Card',
      cardShadow: 'Shadow',
      alertTitle: 'Title',
      alertType: 'Type',
      description: 'Description',
      closable: 'Closable',
      closeText: 'Text On Close Btn',
      center: 'Center',
      showIcon: 'Show Icon',
      effect: 'Effect',
      // 新增的字段
      imageWidth: 'Width',
      imageHeight: 'Height'
    },
  }
}
// cn js 
export default {
  extension: {
    widgetLabel: {
      card: '卡片',
      alert: '提示',
      // 新增
      image: '圖片'
    },
    setting: {
      cardFolded: '是否收起',
      cardShowFold: '顯示折疊按鈕',
      cardWidth: '卡片寬度',
      cardShadow: '顯示陰影',
      alertTitle: '標(biāo)題',
      alertType: '類型',
      description: '輔助性文字',
      closable: '是否可關(guān)閉',
      closeText: '關(guān)閉按鈕文字',
      center: '文字居中',
      showIcon: '顯示圖標(biāo)',
      effect: '顯示效果',
      // 新增
      imageWidth: '寬度',
      imageHeight: '高度'
    },
  }
}
 

2.5 增加屬性編輯器

我們上邊也提高了圖片的imagewidth需要使用 image-editor編輯組件來進(jìn)行編輯,那么我們需找到存放編輯組件的位置,如下圖路徑

如圖地方新增 image-editor.vue 組件,其內(nèi)部代碼如下:

<template>
  <div>
    <!-- 圖片寬度編輯 -->
    <el-form-item :label="i18nt('designer.setting.imageWidth')">
      <el-input 
      type="text" 
      v-model="optionModel.imageWidth" 
      ></el-input>
    </el-form-item>
     <!-- 圖片高度編輯 -->
    <el-form-item :label="i18nt('designer.setting.imageHeight')">
      <el-input 
      type="text" 
      v-model="optionModel.imageHeight" 
      ></el-input>
    </el-form-item>
  </div>
</template>
 
<script>
  import i18n from "@/utils/i18n"
  import propertyMixin from "@/components/form-designer/setting-panel/property-editor/propertyMixin"  
  export default {
    name: "image-editor",
    mixins: [i18n, propertyMixin],
    props: {
      designer: Object,
      selectedWidget: Object,
      optionModel: Object,
    },
  }
</script>
 
<style scoped>
  .html-content-editor {
    font-size: 14px;
  }
</style>

 寫完后,基本上一個自定義的圖片編輯器就寫好了。他最終會出現(xiàn)在下邊的自定義擴(kuò)展字段:

2.6 編譯項目

如果你在vue項目內(nèi)直接預(yù)覽,問題不大。

但是注意,如果你是離線預(yù)覽。也就是說,你把所有的資源全部現(xiàn)在下來,放在一個html文件中預(yù)覽的時候,需要重新編譯。

運行

npm run lib-render

最終生成dist文件,取出lib-render中的VFormRender.umd.min.js,這個就是我們離線版本的js。

最終附上離線版本的結(jié)構(gòu):

至此,自定義組件就做好了。

要多看他原始組件如何加載解析的,才能寫出自定義組件。

總結(jié)

到此這篇關(guān)于vue可視化表單設(shè)計器自定義組件使用的文章就介紹到這了,更多相關(guān)vue可視化表單設(shè)計器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-draggable實現(xiàn)拖拽表單的示例代碼

    vue-draggable實現(xiàn)拖拽表單的示例代碼

    本文主要介紹了vue-draggable實現(xiàn)拖拽表單的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue2實現(xiàn)無感刷新token的方式詳解

    vue2實現(xiàn)無感刷新token的方式詳解

    在Web應(yīng)用中,用戶需要通過認(rèn)證和授權(quán)才能訪問受保護(hù)的資源,為了實現(xiàn)認(rèn)證和授權(quán)功能,通常需要使用Token來標(biāo)識用戶身份并驗證其權(quán)限,本文給大家介紹了vue2實現(xiàn)無感刷新token的方式,需要的朋友可以參考下
    2024-02-02
  • Vue3?路由配置與導(dǎo)航實戰(zhàn)教程

    Vue3?路由配置與導(dǎo)航實戰(zhàn)教程

    Vue?Router?提供了強(qiáng)大的路由管理能力,幫助開發(fā)者輕松構(gòu)建流暢、高效的單頁應(yīng)用,本文將帶你深入探討?Vue3?中的路由配置與導(dǎo)航操作,從安裝到實戰(zhàn),手把手教你掌握?Vue?Router?的使用技巧,需要的朋友可以參考下
    2025-03-03
  • 詳解Vue開發(fā)網(wǎng)站seo優(yōu)化方法

    詳解Vue開發(fā)網(wǎng)站seo優(yōu)化方法

    這篇文章主要介紹了Vue開發(fā)網(wǎng)站seo優(yōu)化方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • vue實現(xiàn)時間倒計時功能

    vue實現(xiàn)時間倒計時功能

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)時間倒計時功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue實現(xiàn)動態(tài)路由的示例詳解

    Vue實現(xiàn)動態(tài)路由的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)動態(tài)路由的相關(guān)知識,主要涉及到兩個方面:一是路由的動態(tài)添加,二是基于路由的參數(shù)變化來動態(tài)渲染組件,下面就跟隨小編一起深入學(xué)習(xí)一下動態(tài)路由的實現(xiàn)吧
    2024-02-02
  • vue3?使用setup語法糖實現(xiàn)分類管理功能

    vue3?使用setup語法糖實現(xiàn)分類管理功能

    這篇文章主要介紹了vue3?使用setup語法糖實現(xiàn)分類管理,本次模塊使用 vue3+element-plus 實現(xiàn)一個新聞?wù)镜暮笈_分類管理模塊,其中新增、編輯采用對話框方式公用一個表單,需要的朋友可以參考下
    2022-08-08
  • 解決vue-cli項目sourcemap因為文件重名導(dǎo)致的文件定位映射錯誤問題

    解決vue-cli項目sourcemap因為文件重名導(dǎo)致的文件定位映射錯誤問題

    這篇文章主要介紹了解決vue-cli項目sourcemap因為文件重名導(dǎo)致的文件定位映射錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Vue使用axios(Ajax)+ElementUI實現(xiàn)登錄實踐

    Vue使用axios(Ajax)+ElementUI實現(xiàn)登錄實踐

    本文介紹了如何使用Vue和ElementUI框架創(chuàng)建一個登錄頁面,并實現(xiàn)前后端交互,同時,還討論了跨域問題的解決方案以及ES6中的箭頭函數(shù)
    2026-03-03
  • django+vue實現(xiàn)注冊登錄的示例代碼

    django+vue實現(xiàn)注冊登錄的示例代碼

    這篇文章主要介紹了django+vue實現(xiàn)注冊登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評論

陵水| 永顺县| 探索| 织金县| 泉州市| 连州市| 思南县| 辰溪县| 汕尾市| 星子县| 永新县| 泰兴市| 山西省| 阿拉善盟| 康平县| 大城县| 墨竹工卡县| 城步| 图们市| 莱西市| 三台县| 柳河县| 搜索| 阳曲县| 台前县| 呼和浩特市| 张家港市| 陇川县| 滁州市| 安顺市| 舒兰市| 白水县| 安阳市| 汤阴县| 云浮市| 万荣县| 永州市| 南岸区| 隆林| 乐山市| 清河县|