在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  HTML/ element ui 的talbe中屬性type=“extpand”的動(dòng)態(tài)控制

element ui 的talbe中屬性type=“extpand”的動(dòng)態(tài)控制

element ui 的talbe中有一個(gè)type=“extpand”,我想控制它,讓某些行不用展開(kāi)。

回答
編輯回答
檸檬藍(lán)

可以試試 toggleRowExpansion這個(gè)方法element-ui table

2018年3月5日 07:10
編輯回答
別硬撐

這個(gè)問(wèn)題剛遇到過(guò)。
官方?jīng)]有提供任何對(duì)expand定制化的api和屬性,要么所有行都能擴(kuò)展,并且擴(kuò)展列的圖標(biāo)、文字都不能自定義,要么就沒(méi)有擴(kuò)展。
翻了源碼,發(fā)現(xiàn)是寫(xiě)死的,完全無(wú)后門(mén)可走。。。提了issue,官方回復(fù)“Sorry, we have no plan to support this.”。。。只能自己想辦法hack了。

他擴(kuò)展列的事件是綁在".el-table__expand-icon"這個(gè)div上的,思路倒是簡(jiǎn)單,就是想辦法把對(duì)應(yīng)行的這個(gè)div的display設(shè)成none。關(guān)鍵是怎么找到要隱藏的這些div。

tableData數(shù)組的順序和表格最終渲染出來(lái)的行順序是完全一致的,并且關(guān)鍵一點(diǎn),與table中的".el-table__expand-icon"元素的順序也完全一致。所以,只要等table渲染完成以后,在nextTick里查出所有滿(mǎn)足條件的".el-table__expand-icon"元素隱藏掉就完事兒了。

比如一條數(shù)據(jù)的狀態(tài)是1就擴(kuò)展,否則就不允許擴(kuò)展。在給tableData賦值以后,執(zhí)行:

this.$nextTick(function(){
    let expandIcon = this.$refs.table.$el.querySelectorAll(".el-table__expand-icon");
            this.tableData.forEach((rowData, index) => {
                if (rowData.state !== "1") {
                    expandIcon[index].setAttribute("style", "display:none");
                } else {
                    expandIcon[index].setAttribute("style", "display:block");
                }
            });
})

另外,如果不想用官方的展開(kāi)列的那個(gè)箭頭表示展開(kāi)收起,替換成其他icon或者文字,也需要hack。直接從css入手就行:
屏蔽掉.el-table__expand-icon--expanded的rotate;替換掉.el-table__expand-icon>.el-icon的position,修改.el-icon-arrow-right:before的content

2017年8月19日 17:46