国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vue+element tree(樹形控件數(shù)據(jù)格式)組件(1)

wangdai / 3115人閱讀

摘要:樹形控件數(shù)據(jù)格式組件最近做了第一個(gè)組內(nèi)可以使用的組件,雖然是最簡版,也廢了不少力。讓我來記錄這個(gè)樹形組件的編寫過程和期間用到的知識(shí)點(diǎn)。

vue+element tree(樹形控件數(shù)據(jù)格式)組件(1),

最近做了第一個(gè)組內(nèi)可以使用的組件,雖然是最簡版,也廢了不少力。各位前輩幫我解決問題,才勉強(qiáng)搞定。讓我來記錄這個(gè)樹形組件的編寫過程和期間用到的知識(shí)點(diǎn)。

首先說說需求,就是點(diǎn)擊出現(xiàn)彈窗+蒙板,彈窗內(nèi)容是一個(gè)樹組件當(dāng)然,什么彈窗大小啊,是否顯示多選框,默認(rèn)選中,通過關(guān)鍵字過濾節(jié)點(diǎn)(element都自帶好了)幾個(gè)常用功能都封進(jìn)來,等以后用到別的的時(shí)候再往里加。都解決了)

今天先記錄處理數(shù)據(jù)的問題

與后臺(tái)交流后得知通過接口會(huì)拿到這樣的數(shù)據(jù):

[
            { id: "01", label: "測(cè)試活動(dòng)", pId: "1" },
            { id: "011", label: "測(cè)試活動(dòng)1", pId: "01" },
            { id: "012", label: "測(cè)試活動(dòng)2", pId: "01" },
            { id: "02", label: "測(cè)試活動(dòng)3", pId: "1" },
            { id: "021", label: "測(cè)試活動(dòng)4", pId: "02" },
            { id: "022", label: "測(cè)試活動(dòng)5", pId: "02" },
            { id: "0221", label: "測(cè)試活動(dòng)6", pId: "022" },
            { id: "0222", label: "測(cè)試活動(dòng)7", pId: "022" },
            { id: "0223", label: "測(cè)試活動(dòng)6", pId: "022" },
            { id: "0224", label: "測(cè)試活動(dòng)7", pId: "022" },
            { id: "0225", label: "測(cè)試活動(dòng)6", pId: "022" },
            { id: "0226", label: "測(cè)試活動(dòng)7", pId: "022" },
        ]

而我們查看element的文檔會(huì)看到想要用他們的插件數(shù)據(jù)格式是這樣的

    [{
        id: 4,
        label: "二級(jí) 1-1",
        children: [{
          id: 9,
          label: "三級(jí) 1-1-1"
        }, {
          id: 10,
          label: "三級(jí) 1-1-2"
        }]
      }]
    }, {
      id: 2,
      label: "一級(jí) 2",
      children: [{
        id: 5,
        label: "二級(jí) 2-1"
      }, {
        id: 6,
        label: "二級(jí) 2-2"
      }]
    }, {
      id: 3,
      label: "一級(jí) 3",
      children: [{
        id: 7,
        label: "二級(jí) 3-1"
      }, {
        id: 8,
        label: "二級(jí) 3-2"
      }]
    }]

那這就要我們處理數(shù)據(jù)了,先上js代碼

// 循環(huán)出父節(jié)點(diǎn)

export function toTreeData(data,id,pid,name) {
// 建立個(gè)樹形結(jié)構(gòu),需要定義個(gè)最頂層的父節(jié)點(diǎn),pId是1
    let parent = [];
    for (let i = 0; i < data.length; i++) {

        if(data[i][pid] !== "1"){
        }else{
          let obj = {
            label: data[i][name],
            id: data[i][id],
            children: []
          };
          parent.push(obj);//數(shù)組加數(shù)組值
        }
        // console.log(obj);
        //  console.log(parent,"bnm");

    }
    children(parent);

// 調(diào)用子節(jié)點(diǎn)方法,參數(shù)為父節(jié)點(diǎn)的數(shù)組
function children(parent) {
console.log(parent)
      if (data.length !== 0) {
        for (let i = 0; i < parent.length; i++) {
          for (let j = 0; j < data.length; j++) {
            if (parent[i].id == data[j][pid]){
              let obj = {
                label: data[j][name],
                id: data[j][id],
                children: []
              };
              parent[i].children.push(obj);
            }
          }
          children(parent[i].children);
        }
      }
    }
    console.log(parent,"bjil")
    return parent;
  }
  toTreeData(this.data,"id","pid","label")//這樣調(diào)用就好使了

上面函數(shù)接的四個(gè)值分別是data所有數(shù)據(jù) id id的那個(gè)字段名字 pid 父類id的字段名字 name 內(nèi)容的字段名字 (因?yàn)閭鬟^來的字段不一定叫 id pid label所以寫活的)

  toTreeData(this.data,"id","pid","label")//這樣調(diào)用就好使了
  //這個(gè)回調(diào)函數(shù)作用當(dāng)然是轉(zhuǎn)換數(shù)組的格式

多帶帶拿出來這個(gè)函數(shù)不回調(diào)的時(shí)候它的作用就是你傳入父元素組成的數(shù)組,它會(huì)把每一個(gè)父元素的直屬子元素壓入父元素的children字段中去,這樣我們只需要把新生成的子元素組成的數(shù)組當(dāng)做下一次調(diào)用的父元素?cái)?shù)組調(diào)用這個(gè)函數(shù)它就會(huì)繼續(xù)往里面深入

原作者文章地址:https://www.cnblogs.com/dongy...

方法二:最近在gayhub上看到的 萬能啊這個(gè)
getListData(data, config) {
    var id = config.id || "id";
    var pid = config.pid || "pid";
    var children = config.children || "children";
    // var label=config.label || "LctnName";
    var idMap = {};
    var jsonTree = [];
    data.forEach(function (v) {
        idMap[v[id]] = v;
    });
    data.forEach(function (v) {
        var parent = idMap[v[pid]];
        if (parent) {
            !parent[children] && (parent[children] = []);
            parent[children].push(v);
        } else {
            jsonTree.push(v);
        }
    });
    return jsonTree;
}

getListData(
    data.rows, 
    {
        id: "ID",
        pid: "ParentID",
        children: "children"
    }
);

附上gayhub地址 :
把扁平化的數(shù)據(jù)轉(zhuǎn)換成樹形結(jié)構(gòu)的JSON

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/97715.html

相關(guān)文章

  • vue+element tree(樹形控件數(shù)據(jù)格式)組件(1)

    摘要:樹形控件數(shù)據(jù)格式組件最近做了第一個(gè)組內(nèi)可以使用的組件,雖然是最簡版,也廢了不少力。讓我來記錄這個(gè)樹形組件的編寫過程和期間用到的知識(shí)點(diǎn)。 vue+element tree(樹形控件數(shù)據(jù)格式)組件(1), 最近做了第一個(gè)組內(nèi)可以使用的組件,雖然是最簡版,也廢了不少力。各位前輩幫我解決問題,才勉強(qiáng)搞定。讓我來記錄這個(gè)樹形組件的編寫過程和期間用到的知識(shí)點(diǎn)。 首先說說需求,就是點(diǎn)擊出現(xiàn)彈窗+蒙板...

    Pines_Cheng 評(píng)論0 收藏0
  • 一個(gè)基于vueelement-ui的樹形穿梭框組件

    摘要:在市面上找到一個(gè)好用的樹形穿梭框組件都很難,又不想僅僅因?yàn)橐粋€(gè)穿梭框在之外引入其他重量級(jí)插件,因此就有了。版本增加穿梭框左側(cè)右側(cè)數(shù)據(jù)勾選事件,穿梭框左側(cè)右側(cè)底部。 el-tree-transfer 簡介·請(qǐng)先閱讀文檔及版本說明 因?yàn)楣緲I(yè)務(wù)使用vue框架,ui庫使用的element-ui。在市面上找到一個(gè)好用的vue樹形穿梭框組件都很難,又不想僅僅因?yàn)橐粋€(gè)穿梭框在element-ui之...

    Corwien 評(píng)論0 收藏0
  • element-ui中el-tree樹形控件-樹節(jié)點(diǎn)的選擇(選中當(dāng)前節(jié)點(diǎn),獲取當(dāng)前id并且獲取其父級(jí)

    摘要:在的樹形控件中默認(rèn)獲取選取當(dāng)前選中的方法是但是如果子節(jié)點(diǎn)不是全部選中的話,父節(jié)點(diǎn)算不選中。由于我們一般想要的是就算只選中一個(gè)直接點(diǎn)父節(jié)點(diǎn)以及其父輩都算選中,所以需要自己寫邏輯。 在element-ui的el-tree樹形控件中默認(rèn)獲取選取當(dāng)前選中id的方法是this.$refs.tree.getCheckedKeys();但是如果子節(jié)點(diǎn)不是全部選中的話,父節(jié)點(diǎn)算不選中。由于我們一般想要...

    MobService 評(píng)論0 收藏0
  • 基于vue.js實(shí)現(xiàn)樹形表格的封裝

    摘要:此頁面是實(shí)現(xiàn)樹表格的關(guān)健頁面。這里就是關(guān)健點(diǎn),因?yàn)檫@個(gè)子組件是需要遞歸實(shí)現(xiàn),所以,需要?jiǎng)討B(tài)注冊(cè)到當(dāng)前組件中。補(bǔ)充一點(diǎn)不要只看部分,部分才是這個(gè)樹表格的關(guān)健所在。 基于vue.js實(shí)現(xiàn)樹形表格的封裝(vue-tree-table) 前言 由于公司產(chǎn)品(基于vue.js)需要,要實(shí)現(xiàn)一個(gè)樹形表格的功能,百度、google找了一通,并沒有發(fā)現(xiàn)很靠譜的,也不是很靈活。所以就用vue自己擼了一個(gè)...

    yedf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<