欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

基于vue如何實(shí)現(xiàn)tree插件-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)基于vue如何實(shí)現(xiàn)tree插件,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是專業(yè)的云南網(wǎng)站建設(shè)公司,云南接單;提供網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行云南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

iview提供的控件

iview已經(jīng)很成熟了,如果說我寫的控件和iview提供的控件誰更好,那肯定是選擇iview , 手寫控件只是為了更好的了解vue父子組件之間的通信的。 請(qǐng)讀者還是不要拿我的控件和iview或者其他第三方的去對(duì)比。下面我們先來看看iview的Tree控件如何使用

<template>
  <Tree :data="data2" show-checkbox></Tree>
</template>

<script>
  export default {
    data () {
      return {
        data2: [
          {
            title: 'parent 1',
            expand: true,
            children: [
              {
                title: 'parent 1-1',
                expand: true,
                children: [
                  {
                    title: 'leaf 1-1-1'
                  },
                  {
                    title: 'leaf 1-1-2'
                  }
                ]
              },
              {
                title: 'parent 1-2',
                expand: true,
                children: [
                  {
                    title: 'leaf 1-2-1'
                  },
                  {
                    title: 'leaf 1-2-1'
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  }
</script>

上述的代碼形成的效果如下

基于vue如何實(shí)現(xiàn)tree插件

在使用Tree控件時(shí)在Template中還有如下樹形可以使用(根據(jù)自己需求)

基于vue如何實(shí)現(xiàn)tree插件

然后就是控件的一些事件捕獲

基于vue如何實(shí)現(xiàn)tree插件

子節(jié)點(diǎn)的一些設(shè)置

基于vue如何實(shí)現(xiàn)tree插件

對(duì)于iview的Tree總結(jié)就是一句話:到位!。在這里小編也推薦大家使用iview來開發(fā)。這個(gè)框架對(duì)于后端程序員來說是個(gè)福利。因?yàn)槲覀儾恍枰私馓珜I(yè)的前端的只是就能夠滿足80%的需求了。

手寫控件

同樣的我們先來看看他的用法其實(shí)和iview一樣。用我們封裝好的模板就行了。下面是做一個(gè)部門樹。部門下面掛著人員這個(gè)功能。

<zxhtree
    v-if="userChange"
    class="item"
    treekey="deptId"
    treename="deptName"
    treechildren="children"
    :model="deptData"
    :ids="sysUserRole.deptIds"
    :names="sysUserRole.deptNames"
    @keyname="selectedUserObj"
>
</zxhtree>

js就是去填補(bǔ)上述的數(shù)據(jù),比如deptData、sysUserRole這些。至于這些屬性代表什么意思我們先不著急看。先上個(gè)效果圖。

基于vue如何實(shí)現(xiàn)tree插件

那么我們的zxhtree控件是在哪里注冊(cè)的呢,這里被我們抽離在component.js里。Vue.component('zxhtree', {});
繼續(xù)在zxhtree里看除綁定的節(jié)點(diǎn)是template: '#tree-template'。
tree-template的模板是在component.html中寫好的

<script type="text/x-template" id="tree-template">
  <div>
    <tree-item
        class="item"
        :treekey="treekey"
        v-for="(model, index) in model"
        :treename="treename"
        :treechildren="treechildren"
        :model="model"
        :ids="ids"
        :names="names"
        @keyname="selectedObj"
        @data="synchdata"
    >
    </tree-item>
  </div>
</script>

而在tree-template用到的tree-item控件才是真正的tree控件。這里是為了將樹形包裹起來,所以才包裹了一層模板。
tree-item對(duì)應(yīng)的模板代碼是

<script type="text/x-template" id="item-template">
  <ul class="ztree">
    <li class="level0" @blur="blur" @focus="focus" tabindex="0" hidefocus="true" treenode="">
      <input type="checkbox" :disabled="model.disabled" :ref="model[treename]" :checked="checkStatus" @click="selectedObj"/>
      <span title="" @click="toggle" :class="openStatus" treenode_switch=""></span>
      <a :class="selectClass" treenode_a="" onclick="" target="_blank"  :title="model[treename]">
        <span title="" treenode_ico="" class="button ico_open" ></span>
        <span @dblclick="toggle" class="node_name">{{model[treename]}}</span>
      </a>
      <tree-item
        class="item"
        v-show="open"
        v-for="(model, index) in model[treechildren]"
        :key="index"
        :model="model"
        :treekey="treekey"
        :treename="treename"
        :vistreekey="vistreekey"
        :vistreename="vistreename"
        :treechildren="treechildren"
        ref="child"
        @keyname="keyname"
      >
      </tree-item>
    </li>
  </ul>
</script>

可以很明顯的看到這里我們使用了遞歸進(jìn)行展示樹形結(jié)構(gòu)。因?yàn)闃湫谓Y(jié)構(gòu)你無法確定層級(jí)。所以在里面又使用了針對(duì)子節(jié)點(diǎn)的展示tree-item.

屬性含義示例
treekey內(nèi)部樹形展示deptId
vistreekey樹形展示keydeptId
ids默認(rèn)顯示的數(shù)據(jù)
names默認(rèn)顯示的數(shù)據(jù)
treename內(nèi)部真是展示數(shù)據(jù)deptName
vistreename樹形展示數(shù)據(jù)deptName
treechildren當(dāng)前樹的子節(jié)點(diǎn)數(shù)據(jù)
model當(dāng)前樹的數(shù)據(jù)
(M)keyname用于接受返回的數(shù)據(jù)

手寫控件擴(kuò)展

控件接受數(shù)據(jù)處理邏輯

//接收到數(shù)據(jù)在外面套一層
if(this.model[this.treekey]==undefined){
  this.treekey=this.vistreekey;
}
if(this.model[this.treename]==undefined){
  this.treename=this.vistreename;
}
if (this.model.disabled == true) {
  this.model.disabled = 'disabled';
}
console.log('組件注冊(cè)了嗎');
if ((','+this.ids+',').indexOf(','+this.model[this.treekey]+',') == -1) {
  this.checkStatus = false;
  this.model.checkStatus=this.checkStatus;
} else {
  this.checkStatus=true;
  this.model.checkStatus=this.checkStatus;
  this.treekeys[this.model[this.treekey]]= this.checkStatus;
  this.treenames[this.model[this.treename]]= this.checkStatus;
  this.opt.key=this.treekeys;
  this.opt['name']=this.treenames;
}
if(this.ids!=''){
  var idarr = this.ids;
  for(var index in idarr){
    this.treekeys[idarr[index]]=true;
  }
  if (this.names.indexOf(",") == -1&&this.names!='') {
    this.treenames[this.names]=true;
  }else{
    var namearr = this.names.split(",");
    for(var index in namearr){
      this.treenames[namearr[index]]=true;
    }
  }
}

渲染默認(rèn)數(shù)據(jù)

var newOpt ={'key':{},'name':{}};
  newOpt.key = Object.assign(this.opt.key, opt.key);
  newOpt.name = Object.assign(this.opt.name, opt.name);
  var flag=false;
  for(var index in this.model[this.treechildren]){
    if(newOpt.key[this.model[this.treechildren][index][this.treekey]]!=true){
      flag=true;
    }
  }
  if(!flag){
    newOpt.key[this.model[this.treekey]]=true;
    newOpt.name[this.model[this.treename]]=true;
    this.checkStatus=true;
    this.model.checkStatus=true;
  }
  for(var key in newOpt){
    this.filterRealCheck(newOpt[key]);
  }
  this.opt=newOpt;
  this.$emit('keyname', newOpt);

選擇節(jié)點(diǎn)數(shù)據(jù)處理

if(selected instanceof MouseEvent){
  this.checkStatus=!this.checkStatus;
}else{
  this.checkStatus=selected;
}

this.model.checkStatus=this.checkStatus;
if (this.model.expected != true) {
  this.treekeys[this.model[this.treekey]]= this.checkStatus;
  this.treenames[this.model[this.treename]]= this.checkStatus;
  this.opt.key=this.treekeys;
  this.opt['name']=this.treenames;
}
for(var index in this.$refs.child){
  this.$refs.child[index].selectedObj(this.checkStatus);
}

this.$emit('keyname', this.opt);

關(guān)于“基于vue如何實(shí)現(xiàn)tree插件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+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ì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱:基于vue如何實(shí)現(xiàn)tree插件-創(chuàng)新互聯(lián)
本文地址:http://aaarwkj.com/article18/ccdogp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)定制開發(fā)、網(wǎng)站維護(hù)定制網(wǎng)站、企業(yè)建站、搜索引擎優(yōu)化

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
97国产成人精品视频免费| 成人永久免费播放平台| 国产亚洲中文字幕无线乱码| 蜜臀av一区二区在线观看| 中文字幕国产精品资源| 亚洲伊人久久一区二区| 天天操天天干蜜桃av| av一区二区三区三| 强d乱码中文字幕在线| 国产在线一区二区三区蜜桃| 国产欧美一区二区三区高清| 亚洲一区二区三区四区五区六| 亚洲精品天堂av免费看| 免费在线一区二区av| 日韩黄色成人免费片子| 成年女人大片免费观看版| 中文字幕成人免费看片| 尤物欧美精品一区二区三区| 日韩黄色一级片在线观看| 亚洲成人av毛片在线观看| 久久精品国产av极品| 亚洲黄色成人免费观看| 偷拍盗摄一区二区三区| 成人黄色动作片在线观看| 国产精品国产精品国产| 国产三级三级三级三级三级| 四虎最新地址在线观看| 久久产精品一区二区三区日韩 | 国产亚洲一区二区三区乱码| 熟妇人妻精品视频一区二区 | 日韩成人中文字幕在线视频| 日韩激情小视频在线观看| 精品国产乱码一区二区三区| 日韩爱视频一区二区| 男人的天堂成人午夜视频| 中文字幕有码av海量| 日韩国产欧美亚洲一区不卡| 午夜性色福利在线播放| 日本 影院 一区 二区| 色哟哟精品丝袜一区二区| 日本一区二区免费高清不卡|