1.change ($event,“你要傳遞的其他值”),使用el-select組件時,想傳遞多個值。
或者 在el-option上的value屬性上傳遞對象 eg:
:value="{'classId': ele.classId,'index': $keys,'sonIndex':$key}"
2.value-key 是作為綁定對象的值時的必填項,作為唯一標志,el-select
3.循環遍歷多個el-select組件,選項選中,數據更新了,但是視圖不更新。
import tools from '@/common/tools/index.js'
為什么就可以找到src目錄下的文件?因為在build/webpack.base.conf.js里面定義了簡寫形式
alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), }
所以@ == src ,也造成了@后面要加/ ,等價於 src/ 。
5.clearValidate()要用在before-close函數和取消按鈕函數里,其他地方不好使;Dom模板里不能用this,eg:$refs[‘form’].clearValidate();
解:Element-UI中的Dialog的內容是懶渲染的,即在第一次被打開之前,傳入的默認slot不會被渲染到DOM上,如果要操作DOM,需要在open事件回調中開發代碼。總結:直接閱讀組件底部的Attributes、Slot、Events相關說明。可以通過node_modules讀一下element-ui中Dialog組件的源碼,使用BEMCSS規范,props用法,各個Vue用法的規范使用。
6.Dom里面的form-item循環里validator校驗不能用this.xxx,用了會報錯;不是循環的validator校驗就可以用this.xxx,不會報錯;自定義校驗函數的回調函數callback(new Error('文案));和callback('文案'); 第二種回調用法在for循環方式中不生效。
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 建站列表為什么這個樣式都需要放外面?