天天看點

iview穿梭框(Transfer) filterable搜尋條件清除

問題:

iview提供的穿梭框元件未提供在filterable開啟時,清除搜尋框中輸入内容功能。在項目中遇到問題,将穿梭框放在model中操作,有搜尋條件時模态框再次打開搜尋條件仍然存在。

解決:

1、首先在iview官網上未找到可解決該問題的方式,但是去看了Element-UI提供了相應的功能

iview穿梭框(Transfer) filterable搜尋條件清除

2、其次去GitHub上也沒有找到類似的issue

3、重點來了:

在檢視 【Transfer 穿梭框】相應的源碼時發現如下代碼:

iview穿梭框(Transfer) filterable搜尋條件清除
iview穿梭框(Transfer) filterable搜尋條件清除

在這裡可以看出為元件傳值的字段是【query】(這個在官方文檔中也有展現,隻是在這裡得到了确認),如果可以在項目中擷取到該字段,将其置空感覺可以解決問題。

下面争取找到【query】所在位置:

  • 在調用穿梭框的位置列印整個this對象,将滑鼠放在其子元件的$el上,在浏覽器會隻是其在頁面中對應的位置,如此一級級縮小範圍
iview穿梭框(Transfer) filterable搜尋條件清除
  • 終于在第三級找到了【query】,因為穿梭框存在兩個所搜框,是以你會找到兩個對應的【query】
    iview穿梭框(Transfer) filterable搜尋條件清除

4、最終選擇在模态框消失的毀掉中置空上面兩處的值,具體代碼如下:

$('#xxx').on('hidden.bs.modal', () => {
        this.$children[].$children[].query = ''
        this.$children[].$children[].query = ''
      })
           
後記:

通過這個過程了解了另外一種解決問題的思路:通過擷取虛拟DOM中的資料解決問題。需要指出該方式不是正統方式,救急不救窮,不在萬不得已的時候不要使用!!