element ui 组件踩坑记录--后台管理系统-最全
說明:很久沒有開發過后臺管理系統,elementui都好久沒有用過了,踩了一些小坑,特意記錄下:
element 特點:a.組件的一般輸入的值/可以選擇的值,都是綁定在v-model 上面
b. 在組件上面綁定值,一般來說需要 :屬性名=屬性值 ,這個寫法
c. 在組件上面設置 style=“width: 300px” 可以直接修改組件的寬度
1. input 組件–輸入框 ,防止用戶輸入空格-在v-model 后面加上 .trim:
<el-form-item label="任務名稱"><el-input v-model.trim="allData.taskName" placeholder="請輸入"></el-input></el-form-item>input 輸入框 ,只能輸入數字
oninput="value=value.replace(/[^\d]/g,'')" // 只能輸入數組并且限制最大長度oninput="value=value.replace(/[^\d]/g,'');if(value.length>4)value=value.slice(0,4)"功能代碼示意–注意設置這個, 這個只能設置value屬性名,否則該功能不會生效,然后還需要在data(){}里面設置 value:''
補充修改input組件樣式:
做法:給直接父盒子一個類名,
<!-- 描述 --><div class="describe"><el-input v-model="item.desc" class="nickname" placeholder="請輸入內容"></el-input></div>然后樣式代碼如下:
// describe這個是直接父盒子的類名(需要根據自己設置的盒子類名來設置), 后面一節不用管input.el-input__inner 直接復制就好。/deep/ .describe input.el-input__inner {height: 20px;font-size: 12px;vertical-align: bottom;text-align: left;border: none;padding-left: 0;margin-top: 2px;font-size: 16px;}2.select選擇器:需求功能: 多選-搜索-根據搜索的關鍵詞,將符合條件的內容篩選出來(本地搜索):
// filterable - 搜索功能 // multiple- 多選功能 el-option標簽-選擇內容,設置可以選擇的內容, 還支持change 事件,當用戶選中時觸發 // 選中的value值,label是展示給用戶看的,實際選中的值是 value<el-selectv-model.trim="profilePlatformUid"filterable:reserve-keyword="true"placeholder="請輸入,可多選"style="width: 300px"multiple@change="profilePlatformUidChange"><el-optionv-for="(item, index) in enterpriseList":key="index":label="item.label":value="item.value"></el-option></el-select>有時候要獲取后臺數據,對數據進行拼接,再生成列表給用戶選中,這樣其實可以直接再label標簽上,進行拼接。不用進行其他處理,代碼如下:
// 后臺這里返回的是一個數組,里面是對象,對象里面有兩個屬性courseName courseId , 要把他們拼接起來,可以直接像下面這樣寫。<el-optionv-for="item in enterpriseList":key="item.courseId":label="`課程名稱:${item.courseName} / 課程ID: ${item.courseId}`":value="item.courseId"></el-option>3. 組件el-dialog-卡片,一般用來設置彈出層:
visible- 控制卡片是否展示渲染的開關-布爾值 before-close -這是點擊卡片右上角的關閉按鈕觸發的事件<el-dialogtitle="xxxx"width="50%":visible.sync="isVoluntarilyFlag":before-close="handleClose":close-on-click-modal="false"></el-dialog>4. 解決el-form標簽內 label中的字體過多掉落下來,不在同一行顯示問題,禁止修改功能:
// disabled - 禁止修改,設置后此表單內容的所有內容只能用于展示,不能修改-接受布爾值 // 注意: form表單校驗只會校驗 model綁定的對象內的屬性值,比如這里他就只會校驗autoSendMessageTaskDO這個對象中的屬性值,非autoSendMessageTaskDO這個對象中的屬性值,不予校驗。 // rules --設置校驗規則- 類型:對象,設置在`data(){}`里面 // style="white-space: nowrap" 解決lable 標簽字過多掉下來問題 // label-width="100px" 修改 label 寬度 <el-form:disabled="disabledp"ref="Form"size="small":model="dialogData.autoSendMessageTaskDO"inline:rules="rules"label-width="100px"style="white-space: nowrap">// 校驗規則--可以支持自定規則rules: {value1: [{ required: true, message: '開始日期和結束日期為必選項', trigger: 'change' }],taskName: [{ required: true, message: '請輸入任務名稱', trigger: 'blur' },{ min: 1, max: 20, message: '長度在 1 到 20 個字符', trigger: 'blur' },],}5.form表單校驗:
說明: prop綁定的屬性,不是 form表單標簽上面綁定的屬性的屬性值,一直觸發校驗,也不會報錯,截圖上面字打錯了,是一直會觸發校驗。
表單中 v-if 已經隱藏了的項,是不會觸發校驗的。
清空表單校驗產生的校驗消息:
this.$nextTick(() => { this.$refs.Form.clearValidate(); // 清空表單校驗 });–這個是清除整個表單產生的校驗消息
清除表單中單個項的校驗信息:
功能代碼:
form 為 表單標簽上面設置的 ref屬性
fields 不用管他,不要修改就這樣
content是 prop 屬性綁定的屬性名, --這個就是具體清除那個項產生的校驗信息
6.時間日期選擇器el-date-picker
帶顏色部分是過去時間,不能被選中
將標準格式時間轉換為時間戳:
標準時間格式:2021-01-11T16:22:28.000+0000
7. input輸入框設置最大最小輸入長度:
8.el-radio 單選:
示意圖:
9. el-upload文件上傳:傳送門上傳文件代碼
10. 解決select 選擇器 input輸入框 、時間日期選擇器el-date-picker 賦值后,出現無法修改選中更改問題: 傳送門:賦值后出現無法選中修改操作解決辦法
11. 數據處理: 直接將后臺返回數據的屬性名修改成自己需要的屬性名:
list - 為需要處理的數據體
value label: 是想要需要的屬性名
item.nichname 是上面需要被修改屬性名
12.數據已經修改了但是視圖沒有更新:
本次我遇到的是 修改數組中某個對象中的某一個屬性,數據已經修改成功了,但是視圖卻沒有修改成功。
解決辦法使用this.$set,來修改數據,這樣才會觸發視圖更新。
比如要修改:allCard數組中,某項(對象)中的某個屬性值:
以后遇到的數據處理都會放在這個鏈接中傳送門
.
總結
以上是生活随笔為你收集整理的element ui 组件踩坑记录--后台管理系统-最全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决select 下拉框选择器 inpu
- 下一篇: JS中document对象 wi