成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

基于Vue的樹(shù)形選擇組件的示例代碼-創(chuàng)新互聯(lián)

本文介紹了基于 Vue 的樹(shù)形選擇組件。分享給大家,具體如下:

創(chuàng)新互聯(lián)公司專(zhuān)注于通州企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。通州網(wǎng)站建設(shè)公司,為通州等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

系統(tǒng)要求:Vue 2

基本特性

  •  完美的多級(jí)聯(lián)動(dòng)效果
  •  支持無(wú)限多的分級(jí)
  •  有 全選、半選、不選 三種狀態(tài)

 截圖展示

基于 Vue 的樹(shù)形選擇組件的示例代碼

代碼如下:

 <!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <link rel="icon" href="/upload/otherpic10/logo.png" rel="external nofollow" type="image/x-icon">
 <title>Vue Tree Select Example</title>
 <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
</head>
<body>

 <!-- 遞歸引用的模板 -->
 <template id="one-select" >
  <ul>
   <li v-for="(node, key, index) in tree">
    <div v-if="key != 'selected'">
     <div v-on:click="nodeClick(node, index)" v-bind:class="[node.selected == null ? 'tree-select-null' : (node.selected == 'half' ? 'tree-select-half' : 'tree-select-full'), 'tree-select', 'inline-block']"></div>
     
     <div class="inline-block">{{ key }}</div>
     <div v-if="key != ''">
      <one-select v-bind:tree="node" v-bind:isroot="false"></one-select>
     </div>
    </div>
   </li>
  </ul>
 </template>

 <!-- 整體樹(shù)容器 -->
 <div id="tree">
  <one-select v-bind:isroot="true" v-bind:tree="tree"></one-select>
 </div>

<textarea id="treeDataJSON" >
{
 "客戶管理": {
  "我的客戶": {
   "新分配": {},
   "跟進(jìn)中": {},
   "簽單客戶": {},
   "長(zhǎng)期客戶": {}
  },
  "長(zhǎng)期客戶權(quán)限": {
   "設(shè)為長(zhǎng)期客戶": {},
   "還原長(zhǎng)期客戶": {}
  }
 },
 "采購(gòu)列表": {
  "添加異??颓?: {},
  "添加采購(gòu)單": {},
  "采購(gòu)?fù)素泦瘟斜?: {},
  "供應(yīng)商管理": {},
  "供應(yīng)商聯(lián)系人": {},
  "品牌列表": {
   "寶潔": {},
   "樂(lè)視": {
    "樂(lè)視網(wǎng)": {},
    "樂(lè)視手機(jī)": {
     "樂(lè)視手機(jī) 1": {},
     "樂(lè)視手機(jī) 2": {},
     "樂(lè)視手機(jī) 3": {},
     "樂(lè)視手機(jī) 4": {},
     "樂(lè)視手機(jī) 5": {
      "體驗(yàn)超深層級(jí)": {
       "繼續(xù)體驗(yàn)超深層級(jí)": {
        "依然體驗(yàn)超深層級(jí)": {},
        "依然體驗(yàn)超深層級(jí) 2": {}
       }
      }
     }
    },
    "樂(lè)視電視": {}
   },
   "可口可樂(lè)": {},
   "圣象": {}
  }
 }
}
</textarea>

<script>
// 初始數(shù)據(jù)
var treeDataJSON = document.getElementById("treeDataJSON").value;
var treeData = JSON.parse(treeDataJSON);
Vue.component('one-select', {
 name: 'one-select',
 template: '#one-select',
 props: ['tree', 'isroot'],
 created: function() {
  var realTree = Object.assign({}, this.tree);
  delete realTree.selected;
  if (Object.keys(realTree).length === 0) { // 判斷最低級(jí),再刷新父級(jí)
   this.refreshAllParentNodes(this.$parent);
  }
 },
 methods: {
  nodeClick: function(node, index) {
   if (node.selected === 'full' || node.selected === 'half') {
    Vue.set(node, 'selected', null);
   } else {
    Vue.set(node, 'selected', 'full');
   }
   this.refreshAllParentNodes(self.$parent);
   this.refreshAllParentNodes(this);
   this.refreshAllSonNodes(this.$children[index], node.selected);
  },
  refreshAllSonNodes: function(node, status) {
   if (node instanceof Vue && node.$children.length) {
    for (index in node.$children) {
     Vue.set(node.$children[index].tree, 'selected', status);
     // 遞歸計(jì)算子級(jí)
     this.refreshAllSonNodes(node.$children[index], status);
    }
   }
  },
  refreshAllParentNodes: function(node) {
   if (node instanceof Vue) {
    var status = null;
    var nullCount = 0;
    var halfCount = 0;
    var fullCount = 0;
    for (index in node.$children) {
     if (typeof node.$children[index].tree.selected === 'undefined') {
      nullCount++;
     } else if (node.$children[index].tree.selected === null) {
      nullCount++;
     } else if (node.$children[index].tree.selected === 'half') {
      halfCount++;
     } else if (node.$children[index].tree.selected === 'full') {
      fullCount++;
     }
    }
    if (fullCount === node.$children.length) {
     status = 'full';
    } else if (nullCount === node.$children.length) {
     status = null;
    } else {
     status = 'half';
    }
    Vue.set(node.tree, 'selected', status);

    // 遞歸計(jì)算父級(jí)
    this.refreshAllParentNodes(node.$parent);
   }
  },
  log: function(o) {
   console.log(o);
  }
 }
});
vm = new Vue({
 el: '#tree',
 data: {
  tree: treeData
 },
 methods: {
  // 返回最終數(shù)據(jù)
  getResult: function() {
   return Object.assign({}, this.tree);
  }
 }
});
</script>

<style>
#tree {
 width: 500px;
 margin: 0 auto;
 margin-top: 50px;
}
li {
 list-style: none;
 line-height: 25px;
}
.inline-block {
 display: inline-block;
}
.tree-select {
 width: 13px;
 height: 13px;
 line-height: 16px;
 margin: 3px;
 display: inline-block;
 vertical-align: middle;
 border: 0 none;
 cursor: pointer;
 outline: none;
 background-color: transparent;
 background-repeat: no-repeat;
 background-attachment: scroll;
 background-image: url('selects.png');
}
.tree-select-null {
 background-position: 0 0;
}
.tree-select-full {
 background-position: -14px 0;
}
.tree-select-half {
 background-position: -14px -28px;
}
</style>

</body>
</html>

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:基于Vue的樹(shù)形選擇組件的示例代碼-創(chuàng)新互聯(lián)
鏈接URL:http://jinyejixie.com/article10/jejdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、虛擬主機(jī)Google、網(wǎng)站改版、網(wǎng)站導(dǎo)航網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
宜州市| 安徽省| 隆安县| 麦盖提县| 天全县| 锡林浩特市| 高雄市| 桂林市| 渭南市| 多伦县| 广昌县| 吉水县| 寻乌县| 霍邱县| 宜兴市| 启东市| 布尔津县| 吴旗县| 龙里县| 灵山县| 金门县| 顺平县| 昆明市| 锦州市| 罗甸县| 通榆县| 万山特区| 丁青县| 石楼县| 巫山县| 临洮县| 兴化市| 巴塘县| 宁城县| 驻马店市| 葫芦岛市| 孟村| 司法| 阿拉善右旗| 鹤山市| 昭通市|