欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

有一款基于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 獨立安裝依賴

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

1.2.2 使用注意

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

2.自定義組件,擴展組件?

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

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

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

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

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

所有的字段在項目中都有對應,需要看對應關系的需要到 如下文件中去查看:

我們還是先打開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: '標題',
      alertType: '類型',
      description: '輔助性文字',
      closable: '是否可關閉',
      closeText: '關閉按鈕文字',
      center: '文字居中',
      showIcon: '顯示圖標',
      effect: '顯示效果',
      // 新增
      imageWidth: '寬度',
      imageHeight: '高度'
    },
  }
}
 

2.5 增加屬性編輯器

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

如圖地方新增 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)在下邊的自定義擴展字段:

2.6 編譯項目

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

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

運行

npm run lib-render

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

最終附上離線版本的結構:

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

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

總結

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

相關文章

  • vue3?element?plus按需引入最優(yōu)雅的用法實例

    vue3?element?plus按需引入最優(yōu)雅的用法實例

    這篇文章主要給大家介紹了關于vue3?element?plus按需引入最優(yōu)雅的用法,以及關于Element-plus按需引入的一些坑,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • Vue中使用定時器(setInterval、setTimeout)的兩種方式

    Vue中使用定時器(setInterval、setTimeout)的兩種方式

    js中定時器有兩種,一個是循環(huán)執(zhí)行?setInterval,另一個是定時執(zhí)行?setTimeout,這篇文章主要介紹了Vue中使用定時器?(setInterval、setTimeout)的兩種方式,需要的朋友可以參考下
    2023-03-03
  • vue微信分享到朋友圈 vue微信發(fā)送給好友

    vue微信分享到朋友圈 vue微信發(fā)送給好友

    這篇文章主要為大家詳細介紹了vue微信分享到朋友圈,vue微信發(fā)送給好友功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Vue.js實戰(zhàn)之利用vue-router實現(xiàn)跳轉頁面

    Vue.js實戰(zhàn)之利用vue-router實現(xiàn)跳轉頁面

    對于單頁應用,官方提供了vue-router進行路由跳轉的處理,這篇文章主要給大家介紹了Vue.js實戰(zhàn)之利用vue-router實現(xiàn)跳轉頁面的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • 關于Element-UI中slot的用法及說明

    關于Element-UI中slot的用法及說明

    這篇文章主要介紹了關于Element-UI中slot的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue+express生成token方式

    vue+express生成token方式

    這篇文章主要介紹了vue+express生成token方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue+watermark-dom實現(xiàn)頁面水印效果(示例代碼)

    vue+watermark-dom實現(xiàn)頁面水印效果(示例代碼)

    watermark.js 是基于 DOM 對象實現(xiàn)的 BS 系統(tǒng)的水印,確保系統(tǒng)保密性,安全性,降低數(shù)據(jù)泄密風險,簡單輕量,支持多屬性配置,本文將通過 vue 結合 watermark-dom 庫,教大家實現(xiàn)簡單而有效的頁面水印效果,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • vue 路由meta 設置導航隱藏與顯示功能的示例代碼

    vue 路由meta 設置導航隱藏與顯示功能的示例代碼

    這篇文章主要介紹了vue 路由meta 設置導航隱藏與顯示功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Vue向后端傳數(shù)據(jù)后端接收為null問題及解決

    Vue向后端傳數(shù)據(jù)后端接收為null問題及解決

    這篇文章主要介紹了Vue向后端傳數(shù)據(jù)后端接收為null問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3管理后臺項目使用高德地圖選點的實現(xiàn)

    Vue3管理后臺項目使用高德地圖選點的實現(xiàn)

    本文主要介紹了Vue3管理后臺項目使用高德地圖選點的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07

最新評論