1,toggleRowSelection調用方式為refs方式,直接操作DOM層
this.$refs.multipleTable.toggleRowSelection(item, innerGood.selected);
2,我將dialog直接封裝成組件,這是造成問題的直接原因

3,然后在這個組件中執行了mounted函數,但是dialog是懶加載模式,在showDialog默認為false的時候,在初始時dialog根本沒有掛載到body下面,因此這時更不存在table被掛載上去,進而導致undefined問題;
4,因為dialog被封裝成了一個組件,而這個組件,在一開始就被執行了,所以該組件會調用mounted函數

5,因此我第一想法是增加v-if,來延遲載入該組件,但帶來的問題是,SelectGoods會被來回銷毀重建,導致不能保持dialog隱藏時的狀態

6,因為dialog內部邏輯新建后,后期只是從body上移除,但是並沒有被銷毀,等再次顯示時,dialog里面的內容不會變化,這就是我想要的,而現在問題就是mounted時,調用this.$refs.multipleTable.toggleRowSelection報未定義,那我就在想,繞開mounted即可,給SelectGoods增加一個初始化變量,初始時為false,第一次監聽到dialog顯示時,再調用mounted中的函數,並且在this.$nextTick中執行this.$refs.multipleTable.toggleRowSelection函數,這次的確解決了問題

7,最終效果,保持了dialog狀態,不會被頻繁銷毀重建,又解決了未定義問題

版權聲明:本文為wangsenling原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
