电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue Element前端應用開發之常規Element界面組件

瀏覽:13日期:2022-09-29 18:08:14
目錄1、列表界面和其他模塊展示處理2、常規界面組件的使用1)表單和表單項、單文本框2)下拉列表控件的綁定3)圖片展示4)第三方擴展控件3、自定義組件的創建使用1、列表界面和其他模塊展示處理

常規的列表展示界面,一般分為幾個區域,一個是查詢區域,一個是列表展示區域,一個是底部的分頁組件區域。查詢區域主要針對常規條件進行布局,以及增加一些全局或者批量的操作,如導入、導出、添加、批量添加、批量刪除等按鈕;而其中主體的列表展示區域,是相對比較復雜一點的地方,需要對各項數據進行比較友好的展示,可以結合Tag,圖標,按鈕等界面元素來展示,其中列表一般后面會包括一些對單行記錄處理的操作,如查看、編輯、刪除的操作,如果是批量刪除,可以放到頂部的按鈕區域。

對于常規按鈕、表格、分頁組件,前面已經做了相關的介紹,這里就不再贅述。

在介紹具體界面組件的時候,我們先來了解下,整體的界面布局,我們把常規的列表界面,新增、編輯、查看、導入等界面放在一起,除了列表頁面,其他內容以彈出層對話框的方式進行處理,如下界面示意所示。

Vue Element前端應用開發之常規Element界面組件

每個對話框的:visible的屬性值,則是確定哪個模態對話框的顯示和隱藏。

Vue Element前端應用開發之常規Element界面組件

在Vue的JS模塊里面,我們除了定義對應的對話框顯示的變量外,對每個對話框,我們定義一個表單信息用來進行數據的雙向綁定處理。

Vue Element前端應用開發之常規Element界面組件

常規的新增、編輯、查看、導入等內容的定義,作為一個對話框組件定義,常規的對話框組件的使用代碼如下所示。

<el-dialog :visible.sync='dialogVisible' :before-close='handleClose'> <span>這是一段信息</span> <span slot='footer' class='dialog-footer'> <el-button @click='dialogVisible = false'>取 消</el-button> <el-button type='primary' @click='dialogVisible = false'>確 定</el-button> </span></el-dialog>

為了控制對話框的樣式,我們這里注意下footer的slot,這個我們一般是把處理按鈕放在這里,如對于查看界面對話框,我們定義如下所示。

Vue Element前端應用開發之常規Element界面組件

一般來說,對于表單內容比較多的場景,我們一般分開多個選項卡進行展示或者錄入,這樣方便管理,查看界面整體效果如下所示。

Vue Element前端應用開發之常規Element界面組件

對于對話框的數據綁定,我們在打開對話框前,先通過API模塊請求獲得JSON數據,然后綁定在對應的對話框模型屬性上即可,如對于查看界面,我們的處理邏輯如下所示。

showView(id) { var param = { id: id } GetProductDetail(param).then(data => {Object.assign(this.viewForm, data); }) this.isView = true },

對于表格的雙擊,我們同樣綁定它的查看明細處理操作,如下模板代碼和JS代碼所示。

模板HTML代碼如下:

<el-table v-loading='listLoading' :data='productlist' border fit stripe highlight-current-row :header-cell- @selection-change='selectionChange' @row-dblclick='rowDbclick'>

JS邏輯代碼如下

rowDbclick(row, column) { var id = row.ID this.showView(id); },2、常規界面組件的使用

一般情況下,我們使用界面組件的時候,參考下官網《Element組件使用》,尋找對應組件的代碼進行參考,就差不多了,這里還是就各種常規的Element組件進行大概的介紹吧。

1)表單和表單項、單文本框

對于表單,我們一般定義一個對應的名稱,并設置它的data對應的模型名稱即可,如下所示。

<el-form ref='viewForm' :model='viewForm' label-width='80px'>

而表單項,一般是定義好表單項的Label即可,然后在其中插入對應的錄入控件或者展示控件。如對于單文本組件使用,如下所示。

<el-form-item label='產品編號'> <el-input v-model='editForm.ProductNo' /> </el-form-item>

其中 v-model='editForm.ProductNo' 就是對應綁定的數據。

而表單項,可以添加對字段的驗證處理,在數據提交前,可以校驗客戶的錄入是否有效等。

<el-form-item prop='email' label='郵箱' :rules='[ { required: true, message: ’請輸入郵箱地址’, trigger: ’blur’ }, { type: ’email’, message: ’請輸入正確的郵箱地址’, trigger: [’blur’, ’change’] } ]' > <el-input v-model='dynamicValidateForm.email'></el-input> </el-form-item>

注意這里表單項,必須添加一個prop的屬性設置,如prop='email' 所示。

一般為了控制布局,我們還結合el-row進行一個布局的處理,如下代碼所示(一行等于span為24,span=12也就是一行放兩個控件組)。

<el-row> <el-col :span='12'> <el-form-item label='產品編號'> <el-input v-model='editForm.ProductNo' /> </el-form-item> </el-col> <el-col :span='12'> <el-form-item label='條碼'> <el-input v-model='editForm.BarCode' /> </el-form-item> </el-col></el-row>2)下拉列表控件的綁定

下拉列表的綁定處理,也是通過v-model 進行值的綁定,而選項則可以通過數據列表進行綁定。

<el-form-item label='商品類型'> <el-select v-model='editForm.ProductType' filterable='' placeholder='請選擇'> <el-option v-for='(item, key) in typeList' :key='key' :label='item.value' :value='item.key' /> </el-select></el-form-item>

而選項中的typeList,我們可以在頁面初始化的時候獲取出來即可。

created() { // 獲取產品類型,用于綁定字典等用途 GetProductType().then(data => { if (data) {data.forEach(item => { this.productTypes.set(item.id, item.name) this.typeList.push({ key: item.id, value: item.name })})// 獲取列表信息this.getlist() } }); },

對于textarea常規的多行文本框,其實和普通單行文本框處理差不多,指定它的type='textarea' 和 rows的數值即可。

<el-tab-pane label='說明' name='second'> <el-form-item label='說明'> <el-input v-model='editForm.Description' type='textarea' :rows='10' /> </el-form-item> </el-tab-pane>

而對于一些可能需要展示HTML內容的,我們可以使用DIV控件來展示,通過v-html標識來處理包含HTML代碼的內容。

<el-tab-pane label='詳細說明'> <el-form-item label='詳細說明'> <div v-html='viewForm.Note' /> </el-form-item> </el-tab-pane>3)圖片展示

對于一些需要展示服務器圖片,我們請求后,根據Element圖片組件的設置處理即可,如下包括單個圖片和多個圖片的展示和預覽操作。

Vue Element前端應用開發之常規Element界面組件

圖片展示的代碼如下所示。

<el-tab-pane label='圖片信息'> <el-form-item label='封面圖片'> <el-image :src='http://www.hdgsjgj.cn/bcjs/viewForm.Picture':preview-src-list='[viewForm.Picture]' /> </el-form-item> <el-form-item label='Banner圖片'> <el-image :src='http://www.hdgsjgj.cn/bcjs/viewForm.Banner':preview-src-list='[viewForm.Banner]' /> </el-form-item> <el-form-item label='商品展示圖片'> <el-imagev-for='item in viewForm.pics':key='item.key' :src='http://www.hdgsjgj.cn/bcjs/item.pic' :preview-src-list='getPreviewPics()' /> </el-form-item> </el-tab-pane>

上圖中,如果是單個圖片,那么預覽我們設置一個集合為一個url即可,如[viewForm.Banner],如果是多個圖片,需要通過一個函數來獲取圖片列表,如getPreviewPics() 函數所示。

getPreviewPics() { // 轉換ViewForm.pics里面的pic集合 var list = [] if (this.viewForm.pics) {this.viewForm.pics.forEach(item => { if (item.pic) { list.push(item.pic) }}) } return list }4)第三方擴展控件

對于一些需要使用擴展組件的,我們一般搜索下解決方案,通過npm安裝對應的組件即可解決,如對于條碼和二維碼,我使用@chenfengyuan/vue-barcode和 @chenfengyuan/vue-qrcode,一般在Github上搜索下關鍵字,總能找到一些很受歡迎的第三方組件。

Vue Element前端應用開發之常規Element界面組件

安裝這些組件都有具體的說明,如下所示(如果卸載,直接修改install為uninstall即可)。

npm install @chenfengyuan/vue-barcode vue

以及

npm install @chenfengyuan/vue-qrcode vue

條碼和二維碼的展示效果如下所示

Vue Element前端應用開發之常規Element界面組件

如果全局引入barcode和qrcode 組件,我們在main.js里面引入即可,如下代碼所示

// 引入barcode,qrcodeimport VueBarcode from ’@chenfengyuan/vue-barcode’;import VueQrcode from ’@chenfengyuan/vue-qrcode’;Vue.component(VueBarcode.name, VueBarcode);

富文本編輯,我這里采用了Tinymce 第三方組件來實現編輯處理,展示效果如下所示。

Vue Element前端應用開發之常規Element界面組件

代碼如下所示

<el-tab-pane label='詳細說明' name='third'> <el-form-item label='詳細說明'> <tinymce v-model='editForm.Note' : /> </el-form-item> </el-tab-pane>

以上就是一些常規的界面組件的使用,后面在繼續介紹文件上傳和圖片結合的操作。

3、自定義組件的創建使用

使用Vue的比以往BS開發的好處,就是可以很容易實現組件化,這點很好,一旦我們定義好一個控件,就可以在多個界面里面進行使用,非常方便,而且封裝性可以根據自己的需要進行處理。

查詢區域一般的界面效果如下所示,除了包含一些常用的查詢條件,一般會有一些下拉列表,這些可能是后臺字典里面綁定的內容,可以考慮作為一個通用的字典下拉列表組件來做。

Vue Element前端應用開發之常規Element界面組件

其實界面錄入的時候,也往往需要這些條件下拉列表的。

Vue Element前端應用開發之常規Element界面組件

那么我們來定義一個自定義組件,并在界面上使用看看。

在Components目錄創建一個目錄,并創建一個組件的vue文件,命名為my-dictdata.vue,如下所示。

Vue Element前端應用開發之常規Element界面組件

界面模板代碼我們就一個select組件為主即可。

<template> <el-select v-model='svalue' filterable clearable placeholder='請選擇'> <el-option v-for='(item, index) in dictItems' :key='index' :label='item.Text' :value='item.Value' /> </el-select></template>

script腳本邏輯代碼如下所示。

<script>// 引入API模塊類方法import { GetDictData } from ’@/api/dictdata’export default { name: ’MyDictdata’, // 組件的名稱 props: { typeName: { // 字典類型方式,從后端字典接口獲取數據 type: String, default: ’’ }, options: {// 固定列表方式,直接綁定 type: Array, default: () => { return [] } } }, data() { return { dictItems: [], // 設置的字典列表 svalue: ’’ // 選中的值 } }, watch: { // 判斷下拉框的值是否有改變 svalue(val, oldVal) { if (val !== oldVal) {this.$emit(’input’, this.svalue); } } }, mounted() { var that = this; if (this.typeName && this.typeName !== ’’) { // 使用字典類型,從服務器請求數據 GetDictData(this.typeName).then(data => {if (data) { data.forEach(item => { if (item && typeof (item.Value) !== ’undefined’ && item.Value !== ’’) { that.dictItems.push(item) } });} }) } else if (this.options && this.options.length > 0) { // 使用固定字典列表 this.options.forEach(item => {if (item && typeof (item.Value) !== ’undefined’ && item.Value !== ’’) { that.dictItems.push(item)} }); } // 設置默認值 this.svalue = this.value; }, methods: { }}</script>

主要就是處理字典數據的獲取,并綁定到模型對象上即可。

在頁面上使用前,需要引入我們定義的組件

import myDictdata from ’@/components/Common/my-dictdata’

然后包含進去components里面即可

export default { components: { myDictdata },

那么原來需要直接使用select組件的代碼

<el-select v-model='searchForm.ProductType' filterable clearable placeholder='請選擇'> <el-option v-for='(item, key) in typeList' :key='key' :label='item.value' :value='item.key' /></el-select>

則可以精簡為一行代碼

<my-dictdata v-model='searchForm.ProductType' type-name='商品類型' />

而對于固定列表的,我們也可以通用的處理代碼

<my-dictdata v-model='searchForm.Status' :options='Status' />

其中Status是定義的一個對象集合

Status: [ { Text: ’正常’, Value: 0 }, { Text: ’推薦’, Value: 1 }, { Text: ’停用’, Value: 2 } ]

是不是非常方便,而得到的效果則不變。

Vue Element前端應用開發之常規Element界面組件

以上就是多個頁面內容,通過對話框層模式整合在一起,并介紹如何使用,以及對界面中常見的Element組件進行介紹如何使用,以及定義一個字典列表的主定義組件,用于簡化界面代碼使用

以上就是Vue Element前端應用開發之常規Element界面組件的詳細內容,更多關于Vue Element常規Element界面組件的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | ORP控制器_ORP电极价格-上优泰百科 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 宝鸡市人民医院 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 防火卷帘门价格-聊城一维工贸特级防火卷帘门厂家▲ | 折弯机-刨槽机-数控折弯机-数控刨槽机-数控折弯机厂家-深圳豐科机械有限公司 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 |