欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue之el-tree懶加載數(shù)據(jù)并且實(shí)現(xiàn)樹的過濾問題

 更新時(shí)間:2023年04月24日 09:02:05   作者:__十七  
這篇文章主要介紹了vue之el-tree懶加載數(shù)據(jù)并且實(shí)現(xiàn)樹的過濾問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue el-tree懶加載數(shù)據(jù)并且實(shí)現(xiàn)樹的過濾

樹的樣式:

過濾效果:

過濾代碼實(shí)現(xiàn):

1,如果這里的樹數(shù)據(jù)是全加載,即可使用element-ui中的設(shè)置,進(jìn)行前端過濾。

element-ui對應(yīng)的組件位置

<el-input
  placeholder="輸入關(guān)鍵字進(jìn)行過濾"
  v-model="filterText">
</el-input>
<el-tree
  class="filter-tree"
  :data="data"
  :props="defaultProps"
  default-expand-all
  :filter-node-method="filterNode"
  ref="tree">
</el-tree>
// 監(jiān)聽輸入框中的數(shù)據(jù)
 watch: {
      filterText(val) {
        this.$refs.tree.filter(val);
      }
    },

    methods: {
      filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
      }
    },

2,如果這里的樹數(shù)據(jù)是懶加載,,需要使用后端的模糊加載,返回搜索到的樹的節(jié)點(diǎn)。

重要的是:filter-node-method=“filterNode”,這個(gè)屬性

<el-input placeholder="請輸入搜索內(nèi)容" v-model="filterText" class="inputStyle" clearable> </el-input>
             <el-tree
              :data="treeData"
              node-key="id"
              :filter-node-method="filterNode"
              ref="dimTree"
              :props="treeDataDefaultProp"
              class="tree_Style"
              :expand-on-click-node="false"
              :load="loadNode"
              lazy
            ></el-tree>
	  data(){
			return {
				filterText: '',
				keyword:'',
				}
			}
 watch: {
    // 樹節(jié)點(diǎn)的過濾
    filterText(val) {   
      this.keyword = val
      this.getTreeData()
    }
methods:{
// 將keyword傳入到接口中,從后端返回模糊匹配后的節(jié)點(diǎn),然后賦值給樹綁定的數(shù)據(jù)變量,即可完成。
 // 得到樹的列表
    async getTreeData() {
      const param = {
        type: Number(this.cateTabActive),
        keyword: this.keyword
        };
      const res = await this.$api.get('/api/category', param);
      if (res.code == 200) {
        this.treeData = res.info;
      } else {
        return false;
      }
    },
}

Element el-tree懶加載問題

本文章項(xiàng)目項(xiàng)目全程使用Vue2和Element2!

懶加載:點(diǎn)擊節(jié)點(diǎn)時(shí)才進(jìn)行該層數(shù)據(jù)的獲取。

注意:使用了懶加載之后,一般情況下就可以不用綁定:data。

基礎(chǔ)使用

懶加載需要再指定一個(gè)lazy和懶加載數(shù)據(jù)的方法:load:

<template>
?? ?<el-tree :props="props" :load="loadNode" lazy></el-tree>
</template>
<script>
? export default {
? ? data() {
? ? ? return {
? ? ? ? props: { // 映射配置
? ? ? ? ? label: 'name', // 將獲取數(shù)組中的name作為顯示節(jié)點(diǎn)(label)進(jìn)行展示
? ? ? ? ? children: 'zones', // 將獲取數(shù)組中的zones作為子節(jié)點(diǎn)(children)的展示
? ? ? ? ? isLeaf: 'leaf' // 將獲取數(shù)組中的leaf作為判斷是否是葉子節(jié)點(diǎn)(即沒有子節(jié)點(diǎn)的最底層節(jié)點(diǎn))
? ? ? ? },
? ? ? };
? ? },
? ? methods: {
? ? ? loadNode(node, resolve) { // 懶加載數(shù)據(jù)時(shí)載入的方法,只會執(zhí)行一次
? ? ? ? if (node.level === 0) { // 初始的級數(shù)(最頂層)
? ? ? ? ? return resolve([{ name: 'region' }]); // 最頂層數(shù)據(jù)渲染為region
? ? ? ? }
? ? ? ? if (node.level > 1) return resolve([]);

? ? ? ? setTimeout(() => {
? ? ? ? ? const data = [{
? ? ? ? ? ? name: 'leaf',
? ? ? ? ? ? leaf: true
? ? ? ? ? }, {
? ? ? ? ? ? name: 'zone'
? ? ? ? ? }];
? ? ? ? ? resolve(data);
? ? ? ? }, 500);
? ? ? }
? ? }
? };
</script>

懶加載的方法會得到兩個(gè)參數(shù),一個(gè)是獲取的當(dāng)前節(jié)點(diǎn)(node)的信息(包括它的層級數(shù)據(jù)等);另一個(gè)是一個(gè)重新渲染當(dāng)前節(jié)點(diǎn)下子節(jié)點(diǎn)的方法(resolve),它接收一個(gè)數(shù)組,該數(shù)組也會按照props中的映射關(guān)系,進(jìn)行顯示。

注意:懶加載的方法(:load)在初始載入時(shí)執(zhí)行一次,而后每次點(diǎn)擊節(jié)點(diǎn)前面的箭頭獲取子節(jié)點(diǎn)的時(shí)候再次觸發(fā);即使初始載入的數(shù)據(jù)有變換也不會再觸發(fā),點(diǎn)擊展開子節(jié)點(diǎn)后再次點(diǎn)擊收縮節(jié)點(diǎn)時(shí)也不會再觸發(fā)??!

由于懶加載是一級一級往下獲取,所以對每一級來說都要使用resolve來渲染它顯示的子節(jié)點(diǎn),如果該節(jié)點(diǎn)下沒有顯示的內(nèi)容,它則會一直轉(zhuǎn)圈,這個(gè)時(shí)候需要設(shè)置resolve返回一個(gè)空數(shù)組,這樣如果它沒有獲取到子節(jié)點(diǎn)的內(nèi)容則會在轉(zhuǎn)圈之后顯示為空(并去掉前面的向下展開的箭頭),不會一直轉(zhuǎn)圈:

return resolve([]);

現(xiàn)實(shí)場景:可以在通過node取到每一層的id,根據(jù)這個(gè)id調(diào)用接口得到數(shù)據(jù)。再通過resolve進(jìn)行回顯,回顯的數(shù)據(jù)為這個(gè)id的子節(jié)點(diǎn)

二次封裝

場景:由于用到樹形控件的地方很多,而且需要顯示的數(shù)據(jù)都不一樣,所以將樹形控件再封裝一層,然后根據(jù)外部組件傳來的不同參數(shù),進(jìn)行樹形圖的不同顯示。

思路:通過監(jiān)聽外部傳入數(shù)據(jù)的變化,重新渲染樹,完成不同數(shù)據(jù)的顯示;但是:load只會初始加載一次并獲取當(dāng)前綁定樹上node,如果后面監(jiān)聽數(shù)據(jù)的時(shí)候再次調(diào)用loadTree是獲取不到它的node和resolve,所以會導(dǎo)致渲染失敗。這個(gè)時(shí)候可以通過:data顯示數(shù)據(jù),當(dāng)我們樹上有節(jié)點(diǎn)時(shí),就可以正常觸發(fā):load進(jìn)行子節(jié)點(diǎn)的懶加載了。具體實(shí)現(xiàn)如下:

<template>
? <div class="org-tree">
? ? <el-tree :data="orgList" :props="defaultProps" lazy :load="loadTree" :expand-on-click-node="false" @node-click="nodeClick">
? ? </el-tree>
? </div>
</template>

<script>
? ? export default {
? ? ? ? name: 'Tree',
? ? ? ? props: {
? ? ? ? ? ? logicParams: { // 外部組件傳入的參數(shù)
? ? ? ? ? ? ? ? type: Object
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? watch: {
? ? ? ? ? ? logicParams: {
? ? ? ? ? ? ? ? handler(newVal) {
? ? ? ? ? ? ? ? ? ? this.logicParams = newVal;
? ? ? ? ? ? ? ? ? ? if (this.circleI >0) { // 限制首次加載時(shí)只顯示loadTree加載的樹,而不是:data和loadTree加載的都有
? ? ? ? ? ? ? ? ? ? ? ? this.resetNode();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? this.circleI++;
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? immediate: true,
? ? ? ? ? ? ? ? deep: true
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? data() {
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? defaultProps: {
? ? ? ? ? ? ? ? ? ? children: 'children',
? ? ? ? ? ? ? ? ? ? label: 'name',
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? circleI: 0,
? ? ? ? ? ? ? ? orgList: []
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? // 懶加載加載方法,首次加載樹的時(shí)候會被觸發(fā)
? ? ? ? ? ? loadTree(node, resolve) {
? ? ? ? ? ? ? listByTree(this.logicParams).then(res => {
? ? ? ? ? ? ? ? // this.rootNode = node;
? ? ? ? ? ? ? ? // this.rootResolve = resolve;
? ? ? ? ? ? ? ? let rootMainResolve = resolve;
? ? ? ? ? ? ? ? let treedata = [];
? ? ? ? ? ? ? ? if(node.level == 0) {
? ? ? ? ? ? ? ? ? return resolve([{ name: res.data[0].name }])
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (node.level == 1 ) {
? ? ? ? ? ? ? ? ? treedata.push(res.data)
? ? ? ? ? ? ? ? ? return resolve(...treedata)
? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? if (node.data.isParent && node.data.pId != '') {
? ? ? ? ? ? ? ? ? this.getChild(node.data, node.data.pId, rootMainResolve)
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else ?{
? ? ? ? ? ? ? ? ? return resolve([]) // 防止不停轉(zhuǎn)圈
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? })
? ? ? ? ? ? },
? ? ? ? ? ? getChild(data, type, resolve) { // 每個(gè)節(jié)點(diǎn)使用同一個(gè)接口獲取子節(jié)點(diǎn),只是傳入的參數(shù)不同,將其抽出來
? ? ? ? ? ? ? this.logicChildDataParam.id =data.id;
? ? ? ? ? ? ? this.logicChildDataParam.type = type+ ";;;";
? ? ? ? ? ? ? listByTree(this.logicChildDataParam).then(res => {
? ? ? ? ? ? ? ? return resolve(res.data);?
? ? ? ? ? ? ? })
? ? ? ? ? ? },
? ? ? ? ? ? // 重新渲染樹的根節(jié)點(diǎn)
? ? ? ? ? ? resetNode() {
? ? ? ? ? ? ? listByTree(this.logicParams).then(res => {
? ? ? ? ? ? ? ? ? this.orgList = [res.data[0]]
? ? ? ? ? ? ? })
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>

數(shù)據(jù)回顯

場景:在懶加載的樹上設(shè)置復(fù)選框,需要將之前添加好的懶加載選中的部分在表格的編輯中回顯出來。

思路:由于懶加載的數(shù)據(jù)是一級一級獲取的,所以可以利用default-expanded-keys和default-checked-keys屬性,將需要進(jìn)行回顯的節(jié)點(diǎn)在渲染樹的時(shí)候就設(shè)置上去。(注意在使用這兩個(gè)屬性的時(shí)候)

<template>
? <div class="org-tree">
? ? <el-tree ref="tree" :props="defaultProps" lazy :load="loadTree" :expand-on-click-node="false"?
? ? show-checkbox ?@check-change="checkChange" :default-expanded-keys="defaultExpandKeys" :default-checked-keys="defaultCheckedKeys" node-key="id">
? ? </el-tree>
? </div>
</template>
<script>
? ? export default {
? ? ? ? name: 'OrgTree',
? ? ? ? data() {
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? defaultExpandKeys: [],
? ? ? ? ? ? ? ? defaultCheckedKeys: []
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? ?// 當(dāng)節(jié)點(diǎn)選中或取消選中的時(shí)候觸發(fā),可接受三個(gè)參數(shù)(具體見官網(wǎng),本項(xiàng)目只用觸發(fā)這個(gè)事件的時(shí)機(jī))
? ? ? ? ? ? checkChange(data,state,childChecked) {
? ? ? ? ? ? ? ? let selectedAllList = [];
? ? ? ? ? ? ? ? let checkedList = [];
? ? ? ? ? ? ? ? // 選中所有的節(jié)點(diǎn),包括半選節(jié)點(diǎn)(用作展開的節(jié)點(diǎn))
? ? ? ? ? ? ? ? selectedAllList = this.$refs.tree.getCheckedNodes(false,true);
? ? ? ? ? ? ? ? // 選中所有全選節(jié)點(diǎn),不包括半選(用作選中的節(jié)點(diǎn))
? ? ? ? ? ? ? ? checkedList = this.$refs.tree.getCheckedNodes();
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? // 觸發(fā)父組件方法,將這兩個(gè)數(shù)組傳遞出去,并在父組件的添加點(diǎn)擊事件中調(diào)用添加方法,添加時(shí)需拿到這兩個(gè)節(jié)點(diǎn)數(shù)組用作數(shù)據(jù)的回顯
? ? ? ? ? ? ? ? this.$emit('selectorg', selectedAllList, checkedList);
? ? ? ? ? ? },
? ? ? ? ? ? loadTree(node, tree) {
? ? ? ? ? ? ? ? if (node.level == 0) {
? ? ? ? ? ? ? ? ? ? let che = [];
? ? ? ? ? ? ? ? ? ? let exp = [];
? ? ? ? ? ? ? ? ? ? // 此處的checkedList和selectedAllList是通過調(diào)用編輯接口獲取到的數(shù)據(jù),為了方便理解寫做與checkChange中一樣,以下是偽代碼
? ? ? ? ? ? ? ? ? ? checkedList.forEach(el => { // 遍歷選中的節(jié)點(diǎn)數(shù)組,拿到它們的id
? ? ? ? ? ? ? ? ? ? ? ? if (el.id) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? che.push(el.id);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? selectedAllList.forEach(el => { // 遍歷包括半選的節(jié)點(diǎn)數(shù)組,拿到它們的id(可以將半選節(jié)點(diǎn)都篩出來,將所有半選節(jié)點(diǎn)作為展開的節(jié)點(diǎn),如果嫌麻煩可以將全選的接節(jié)點(diǎn)也展開,不過這樣可能會在樹的數(shù)據(jù)量過多的情況下出現(xiàn)延遲和卡頓,影響性能)
? ? ? ? ? ? ? ? ? ? ? ? if (el.id) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? exp.push(el.id);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? this.defaultCheckedKeys = che; // 將得到的回顯節(jié)點(diǎn)數(shù)組賦值給默認(rèn)選中的數(shù)組
? ? ? ? ? ? ? ? ? ? this.defaultExpandKeys = exp; // 將得到的展開節(jié)點(diǎn)數(shù)組賦值給默認(rèn)展開的數(shù)組
? ? ? ? ? ? ? ? }
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>

回顯問題

場景:在使用懶加載進(jìn)行數(shù)據(jù)回顯時(shí),當(dāng)添加選中的數(shù)據(jù)里存在以下情況:一個(gè)父節(jié)點(diǎn)下的第一和第二個(gè)子節(jié)點(diǎn)同時(shí)被選中,回顯時(shí)得到的默認(rèn)選中的節(jié)點(diǎn)數(shù)組里也只有這兩個(gè)節(jié)點(diǎn)的id,但是最終懶加載回顯的數(shù)據(jù)是這個(gè)父節(jié)點(diǎn)下的所有子節(jié)點(diǎn)全都被選中(獲取其他類似情況)。

分析:由于懶加載的樹是異步加載的,樹在判斷子節(jié)點(diǎn)是否選中的時(shí)候可能由于選中的子節(jié)點(diǎn),而導(dǎo)致其父節(jié)點(diǎn)因?yàn)殛P(guān)聯(lián)而被計(jì)算判斷出選中。

解決一:如果不需要父節(jié)點(diǎn)的復(fù)選框,或者父節(jié)點(diǎn)沒有復(fù)選框,只有子節(jié)點(diǎn)有,或者不需要父子節(jié)點(diǎn)關(guān)聯(lián)的情況下,可以使用check-strictly屬性,斷開父子之間的連接:

<template>
? <div class="org-tree">
? ? <el-tree ref="tree" :props="defaultProps" lazy :load="loadTree" :expand-on-click-node="false"?
? ? show-checkbox ?@check-change="checkChange" :default-expanded-keys="defaultExpandKeys" :default-checked-keys="defaultCheckedKeys" node-key="id" :check-strictly="checkStrictly">
? ? </el-tree>
? </div>
</template>
<script>
? ? export default {
? ? ? ? name: 'OrgTree',
? ? ? ? data() {
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? checkStrictly: true, // 根據(jù)需要在可不同的位置定義
? ? ? ? ? ? }
? ? ? ? }
</script>

解決二:對選中節(jié)點(diǎn)的回顯不使用default-checked-keys,而是利用$nextTick和setCheckedKeys設(shè)置節(jié)點(diǎn)的選中,此方法必須設(shè)置node-key屬性:

<template>
? <div class="org-tree">
? ? <el-tree ref="tree" :props="defaultProps" lazy :load="loadTree" :expand-on-click-node="false"?
? ? show-checkbox ?@check-change="checkChange" :default-expanded-keys="defaultExpandKeys" :default-checked-keys="defaultCheckedKeys" node-key="id">
? ? </el-tree>
? </div>
</template>
<script>
? ? export default {
? ? ? ? name: 'OrgTree',
? ? ? ? data() {
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? defaultExpandKeys: [],
? ? ? ? ? ? ? ? defaultCheckedKeys: []
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? ?// 當(dāng)節(jié)點(diǎn)選中或取消選中的時(shí)候觸發(fā),可接受三個(gè)參數(shù)(具體見官網(wǎng),本項(xiàng)目只用觸發(fā)這個(gè)事件的時(shí)機(jī))
? ? ? ? ? ? checkChange(data,state,childChecked) {
? ? ? ? ? ? ? ? let selectedAllList = [];
? ? ? ? ? ? ? ? let checkedList = [];
? ? ? ? ? ? ? ? // 選中所有的節(jié)點(diǎn),包括半選節(jié)點(diǎn)(用作展開的節(jié)點(diǎn))
? ? ? ? ? ? ? ? selectedAllList = this.$refs.tree.getCheckedNodes(false,true);
? ? ? ? ? ? ? ? // 選中所有全選節(jié)點(diǎn),不包括半選(用作選中的節(jié)點(diǎn))
? ? ? ? ? ? ? ? checkedList = this.$refs.tree.getCheckedNodes();
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? // 觸發(fā)父組件方法,將這兩個(gè)數(shù)組傳遞出去,并在父組件的添加點(diǎn)擊事件中調(diào)用添加方法,添加時(shí)需拿到這兩個(gè)節(jié)點(diǎn)數(shù)組用作數(shù)據(jù)的回顯
? ? ? ? ? ? ? ? this.$emit('selectorg', selectedAllList, checkedList);
? ? ? ? ? ? },
? ? ? ? ? ? loadTree(node, tree) {
? ? ? ? ? ? ? ? if (node.level == 0) {
? ? ? ? ? ? ? ? ? ? let che = [];
? ? ? ? ? ? ? ? ? ? let exp = [];
? ? ? ? ? ? ? ? ? ? // 此處的checkedList和selectedAllList是通過調(diào)用編輯接口獲取到的數(shù)據(jù),為了方便理解寫做與checkChange中一樣,以下是偽代碼
? ? ? ? ? ? ? ? ? ? selectedAllList.forEach(el => { // 遍歷包括半選的節(jié)點(diǎn)數(shù)組,拿到它們的id
? ? ? ? ? ? ? ? ? ? ? ? if (el.id) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? exp.push(el.id);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? this.defaultExpandKeys = exp; // 將得到的展開節(jié)點(diǎn)數(shù)組賦值給默認(rèn)展開的數(shù)組
? ? ? ? ? ? ? ? ? ? this.$nextTick(() => { // 利用$nextTick更新節(jié)點(diǎn)
? ? ? ? ? ? ? ? ? ? ? ? checkedList.forEach(el => { // 遍歷選中的節(jié)點(diǎn)數(shù)組,拿到它們的id
? ? ? ? ? ? ? ? ? ? ? ? if (el.id) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? che.push(el.id);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ?? ?})
? ? ? ? ? ? ? ? ? ? ? ? this.$refs.tree.setCheckedKeys(che); // 手動(dòng)賦值節(jié)點(diǎn)?
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? }
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>

注意:該方法因?yàn)樵趌oad方法中,所以每次觸發(fā)load的時(shí)候(每次首次下拉節(jié)點(diǎn))都會重新獲取一邊數(shù)據(jù),這會導(dǎo)致之前可能選中的節(jié)點(diǎn)又被回顯節(jié)點(diǎn)重置了。

這種情況如果在層級沒有超過2級時(shí),可以通過設(shè)置一個(gè)計(jì)數(shù)器,讓這個(gè)$nextTick只執(zhí)行一次,但是如果層級過多,下層還是會出現(xiàn)全選的情況。這個(gè)問題我暫時(shí)無法避免,所以綜合考慮下來還是采用每執(zhí)行一次load就執(zhí)行一次$nextTick,這樣可以保證更深的層級節(jié)點(diǎn)能正確顯示,對于回顯編輯來說,只要做到先下拉節(jié)點(diǎn)再選擇,就不會出錯(cuò)了。

復(fù)選框顯隱

場景:現(xiàn)在需要去掉所有的葉子節(jié)點(diǎn)(沒有子節(jié)點(diǎn)的節(jié)點(diǎn))的復(fù)選框,默認(rèn)選中了父節(jié)點(diǎn)則其下所有子節(jié)點(diǎn)都 不做判斷。

思路:由于element的tree并未提供這個(gè)屬性或方法,需要我們自己手動(dòng)去修改element內(nèi)部代碼,然后再重新打包,將打好的包替換自己項(xiàng)目中element里的ilb文件夾:

將對應(yīng)版本的element源碼下載下來,安裝依賴并查看項(xiàng)目是否啟動(dòng)成功:

npm install
npm run dev

運(yùn)行成功后找到packages/tree/src/tree-node修改源碼:

<template>
? <div class="el-tree-node">
? ? ...?
? ? ? <!-- 找到復(fù)選框的位置,根據(jù)node.data中的某個(gè)字段判斷(我是根據(jù)isParent判斷)設(shè)置復(fù)選框的顯隱 -->
? ? ? <el-checkbox
? ? ? ? v-if="showCheckbox"
? ? ? ? v-model="node.checked"
? ? ? ? :style="{ 'display': node.data.isParent || node.parent == null ?'':'none'}"
? ? ? ? :indeterminate="node.indeterminate"
? ? ? ? :disabled="!!node.disabled"
? ? ? ? @click.native.stop
? ? ? ? @change="handleCheckChange"
? ? ? >
? ? ? </el-checkbox>
? ? ...
? </div>
</template>

源碼修改好之后,進(jìn)行打包:

npm run dist

打包完成之后會得到新的lib文件夾,將其替換自己項(xiàng)目中的對應(yīng)位置的lib文件夾即可。

注意:直接修改自己項(xiàng)目中的packages里的代碼是無效的,因?yàn)轫?xiàng)目中所運(yùn)行的是lib文件夾里的,packages只是方便查看內(nèi)部源碼!

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue項(xiàng)目兼容ie11的實(shí)現(xiàn)方法

    vue項(xiàng)目兼容ie11的實(shí)現(xiàn)方法

    本文主要介紹了vue項(xiàng)目兼容ie11的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue學(xué)習(xí)筆記之過濾器的基本使用方法實(shí)例分析

    vue學(xué)習(xí)筆記之過濾器的基本使用方法實(shí)例分析

    這篇文章主要介紹了vue學(xué)習(xí)筆記之過濾器的基本使用方法,結(jié)合實(shí)例形式分析了vue.js過濾器的基本功能、用法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Vue?import?from省略后綴/加載文件夾的方法/實(shí)例詳解

    Vue?import?from省略后綴/加載文件夾的方法/實(shí)例詳解

    本文介紹Vue在import時(shí)省略后綴以及import文件夾的方法,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 代理模式在vue中的使用示例解析

    代理模式在vue中的使用示例解析

    這篇文章主要為大家介紹了代理模式在vue中的使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 解決vue 中 echart 在子組件中只顯示一次的問題

    解決vue 中 echart 在子組件中只顯示一次的問題

    vue推薦組件化開發(fā),所以就把每個(gè)圖表封裝成子組件,然后在需要用到該圖表的父組件中直接使用。接下來給大家介紹vue 中 echart 在子組件中只顯示一次的問題,需要的朋友參考下吧
    2018-08-08
  • vuejs項(xiàng)目打包之后的首屏加載優(yōu)化及打包之后出現(xiàn)的問題

    vuejs項(xiàng)目打包之后的首屏加載優(yōu)化及打包之后出現(xiàn)的問題

    這篇文章主要介紹了vuejs項(xiàng)目打包之后的首屏加載優(yōu)化及打包之后可能出現(xiàn)的問題,需要的朋友可以參考下
    2018-04-04
  • 實(shí)例講解vue源碼架構(gòu)

    實(shí)例講解vue源碼架構(gòu)

    在本篇文章中小編給大家分享了關(guān)于vue源碼架構(gòu)的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • nuxt3中server routes的使用詳解

    nuxt3中server routes的使用詳解

    本文主要介紹了nuxt3中server routes的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • vue 中filter的多種用法

    vue 中filter的多種用法

    這篇文章主要介紹了vue 中filter的多種用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2018-04-04
  • Vue Router應(yīng)用方法詳解

    Vue Router應(yīng)用方法詳解

    在看這篇文章的幾點(diǎn)要求:需要你先知道Vue-Router是個(gè)什么東西,用來解決什么問題,以及它的基本使用。如果你還不懂的話,建議上官網(wǎng)了解下Vue-Router的基本使用后再回來看這篇文章
    2022-09-09

最新評論