bootstrap框架對於動態資料處理的相關問題
阿新 • • 發佈:2022-03-31
最近在專案開發中遇到了兩個問題:
1.在頁面載入時對於介面資料進行判斷,彈出modal對話方塊,並在對話方塊上宣告按鈕可以後續再次呼叫該介面進行判斷:
由於後續還要呼叫介面所以對話方塊可能會再度出現,只加載資料會由於介面過快導致頁面沒有變化,給使用者一種沒有改變的反饋;
所以需要對話方塊在點選按鈕時進行隱藏,呼叫介面後根據結果判斷是否顯示。
最開始使用modal的“show”與“hide"方法進行控制:
$('#errorModal').modal('hide');
$('#errorModal').modal('show');
但隨著點選次數的增加,會出現白屏及彈窗不出現問題:
檢視dom樹發現是背景透明度圖層沒有正確關閉,不斷疊加導致的,同時介面的呼叫也會造成彈窗無法正確顯示,具體原因不明。
查詢資料推測是由於每次介面重新整理對於對話方塊來說,資料在不斷重新載入,資料的重複繫結造成異常現象,使用
$('#errorModal').removeData('bs.modal');
方法解除對話方塊的繫結,解決該問題。
2.頁面通過vue的v-for方法生成一組dom節點,後續對該部分啟用bootstrap的必填性校驗時出現報錯,由於有了對話方塊、table表格的相關經驗,判斷還是啟用校驗時機的問題:
即在mounted週期啟用boot校驗,後續增加dom節點並沒有對該節點宣告的校驗初始化。
this.$nextTick(()=>{ $('#CMS_Form').removeData('bootstrapValidator') //需要先清除原有列表校驗 $("#CMS_Form").bootstrapValidator(); //初始化 })
在click事件增加dom節點後,對原先的表單校驗清空,並重新宣告,注意整個語句放在nextTick中。