1.change ($event,「你要傳遞的其餘值」),使用el-select組件時,想傳遞多個值。javascript
或者 在el-option上的value屬性上傳遞對象 eg: css
:value="{'classId': ele.classId,'index': $keys,'sonIndex':$key}"
2.value-key 是做爲綁定對象的值時的必填項,做爲惟一標誌,el-selecthtml
3.循環遍歷多個el-select組件,選項選中,數據更新了,可是視圖不更新。vue
import tools from '@/common/tools/index.js'
爲何就能夠找到src目錄下的文件?由於在build/webpack.base.conf.js裏面定義了簡寫形式java
alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), }
因此@ == src ,也形成了@後面要加/ ,等價於 src/ 。node
5.clearValidate()要用在before-close函數和取消按鈕函數裏,其餘地方很差使;Dom模板裏不能用this,eg:$refs[‘form’].clearValidate();webpack
解:Element-UI中的Dialog的內容是懶渲染的,即在第一次被打開以前,傳入的默認slot不會被渲染到DOM上,若是要操做DOM,須要在open事件回調中開發代碼。總結:直接閱讀組件底部的Attributes、Slot、Events相關說明。能夠經過node_modules讀一下element-ui中Dialog組件的源碼,使用BEMCSS規範,props用法,各個Vue用法的規範使用。web
6.Dom裏面的form-item循環裏validator校驗不能用this.xxx,用了會報錯;不是循環的validator校驗就能夠用this.xxx,不會報錯;自定義校驗函數的回調函數callback(new Error('文案));和callback('文案'); 第二種回調用法在for循環方式中不生效。element-ui
7.菜單路由路徑和Vue-router裏面的配置是全匹配,有空格都不行。數組
8.Form的每一個item中的validator自定義校驗邏輯只能有一個,若是是2個,就會promise的狀態一直未padding,排查問題可用代碼的刪除排查法,刪到最簡單來排查。
9.多個表單校驗,可用Promise.all[].then();很好用。
9.針對Vue響應不及時問題,setTimeOut是個很好的解決問題的辦法。Event loop概念,可是有沒有其餘更好的辦法呢?Object.assign(); Vue.$set(); 除此以外還有一個watch的巧用,數據變化就從新複製(解決jiaoshi工做臺切換單元綜合演練數據不更新問題)
10.webpack兼容問題,在Vue項目中,Vue文件的style中的type='text/css';script中的type='text/javascript',與webpack4版本不兼容,須要刪除掉這樣的寫法。
11.Vue項目中DOM渲染結果會有 ‘data-v-xxx’字樣,是由於Vue組件中使用了scoped,保證各組件間樣式不互相影響,給每一個component都作了惟一的標記,每引入一個新組件都會多一個data-v-xxx字樣。
12.Element-UI的表單提交中,若是加了自定義校驗規則,最後必定要有return callback();否則表單執行不下去的。曾經找了半天錯誤,才找到這個緣由。
checkLogId(rule, value, callback){// 校驗LodId格式 以C開始,後面是數字 let logId = this.ruleForm.logId; let headLetter = logId.slice(0,1); let otherLetter = logId.slice(1); let rules = /^\+?[1-9][0-9]*$/; // 正整數規則 let re = new RegExp(rules); if( headLetter !== "C" ){ return callback(new Error('打點ID格式添加錯誤')); }else if( !re.test(otherLetter) ){ return callback(new Error('打點ID格式添加錯誤')); } return callback(); },
13. 模板列表使用flex佈局,在最後一行,不足一行時,兩端分佈的解決:
一行n個,在最後放n個寫死的item,寬度和item保持同樣,高度設置爲0。
延伸:是否有更優雅更好的實現方式呢~
14. 列表中爲何這個樣式都須要放外面?
el-button--default > span
解析:a. scoped利用CSS3屬性選擇器的原理來控制做用域,而Vue組件會給html元素標籤添加data-*的屬性。
b. 在當前組件引入另外一子組件時,子組件生成的HTML元素並無被加上屬性做用域;而編譯後的CSS選擇器加在了‘尾選擇器’上,這樣的誤差致使了scoped內的樣式對於子組件樣式的覆蓋重寫失效。
c. Scoped只對當前頁面直接使用的標籤樣式有效
d. 解決:另起一個不加scoped的style標籤,在裏面用CSS選擇器層級覆蓋控制子組件樣式。
延伸:若是更優地解決這樣的場景?CSS編譯時如何在尾部加入屬性選擇器的?
15. 搜索中重置邏輯不可用?
this.$refs[formName].resetFields();
解析:formName此處要和el-form的ref、model保持一致,並且每一個el-form-item的prop屬性對應值於v-modal綁定值這樣使用resetFields重置纔會生效,效果是用data裏面值覆蓋了原來的值,潛臺詞就是data裏面若是有默認值,此時item裏面就是默認值而不是空值。
el-button--default > span 建站列表爲何這個樣式都須要放外面?