做vue項目中遇到的坑總結與學習


1、出現跨域問題(已經進行跨域設置的情況下)

這個問題找了半天。。。。最后的解決方式:查看后台支持的編碼格式和前端axios發送過去的的編碼格式是否一致。不一致就會出現跨域問題。至於為什么也不明白,可能是瀏覽器認為不一致的編碼就是跨域也可能就是瀏覽器的bug吧。

具體方式:可以安裝一個叫qs的依賴,然后在請求前用qs.stringify()方法轉一下再發送請求,就ok了。

首先下載qs:npm install qs 

然后引入import qs from 'qs'

在請求接口中設置一下:

代碼: export function userLogin(params){
return service({
method:'post',
url:'/a/login',
data: qs.stringify(params), //主要是這一步很重要!
}).then((res)=>{return res.data}).catch((err)=>{console.log(err)})
}

2、vue多個路由綁定到同一個組件上,造成created只執行一次,就是說頁面加載成功一次后就不能再變化,所以不論怎么觸發路由跳轉頁面都只顯示第一次加載的數據。

效果:點擊左側樹節點實現右側頁面跳轉

 

經查閱資料,原因是:這個和vue的生命周期有關系,出現這種情況是因為頁面在加載成功后他的大多數鈎子函數(如mounted、computed...)就不會再次觸發,所以導致頁面感覺沒有實現跳轉。

解決方法:針對這種情況,其實不需要進行頁面切換,只需要頁面中的數據發生變化就好。在頁面中監聽路由地址的變化,當地址變化的時候,就重新加載數據。

具體代碼:

watch: {
'$route.path': function (to, from) {
this.initInfo();//調用相應方法
}
}

3、el-tree控件,鼠標手移到樹節點上,鼠標手和節點顯示不對應。

原因:樣式設置有問題,通過f12調試發現,某條樹節點的高度太高,以至於把其他的節點都覆蓋住了,所以這個節點高度太高,跨度太大,所以鼠標手和節點位置會有偏差。

解決:修改每個樹節點的高度。

4、el-tree控件,如何設置樹節點選中背景顏色

解決:加上highlight-current

在樣式中設置:

 5、element-ui組件使用el-table如何動態設置列表的寬度

首先說一下自己遇到的問題吧:

表頭數據也是動態獲取的,所以不好給每表頭設置固定寬度,而且是使用v-for循環顯示表頭。這個時候的需求就是想把倒數第二列的寬度設置寬一些,其他列寬度窄些。

具體的實現方法:

在表格中添加寬度屬性:width,在method中添加自定義列的寬度的方法。判斷某個表頭的字段是不是倒數第二個,然后設置寬度,如果不是再設置成其他寬度。這里我為了讓表格寬度自適應不同瀏覽器,用了百分比設置寬度,但是效果不理想。

所以考慮不用百分比但又要自適應,這里才有min-width,設置最小寬度的同時會動態分配寬度。

這時候效果就比較理想,效果圖如下:

 



 
        

 6、el-tree控制如何自定義圖標樣式?

怎么將圖標從圖1改成圖2,數據從后台獲取的?

解決:研究了一下開發文檔有個icon-class可以自定義圖標樣式

剛開始我理解錯了,在icon-class前加了:當做動態屬性處理了,其實這個就是一個class。

這樣直接使用即可。

就可以得到想要的效果。class具體的值可以查看

 el內置的圖標    https://element.eleme.cn/#/zh-CN/component/icon 

 7、element-ui組件中使用form表單,自定義驗證規則時導致validate不能執行。

解決:在自定義規則中

一定要在自定義規則之后加上else{callback()}

否則,callback不能進行回調。導致validate()無法執行。

如果有多條驗證規則,每條規則都要加上else{callback()}才可以!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM