Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie Vue die Baumsteuerung Z-Tree verwendet, um Daten dynamisch hinzuzufügen

不言
Freigeben: 2018-07-21 10:06:47
Original
5158 Leute haben es durchsucht

In diesem Artikel erfahren Sie, wie Vue den Baumkontroll-Z-Baum verwendet, um dynamisch Daten hinzuzufügen. Freunde in Not können darauf zurückgreifen.

Umgebung: vue 2.9.3; webpack;

Plug-in: z-tree, jquery (cnpm install xxxx)

Problem aufgrund der großen Datenmenge , Dynamisches Laden ist erforderlich Daten, standardmäßig sind die zum ersten Mal angeforderten Daten die höchste Ebene, und dann sind alle Teilmengen leer.

Ziel: Klicken Sie auf die erste Ebene, um die Teilmenge des aktuellen übergeordneten Knotens abzufragen und die untergeordneten Knoten unterhalb des übergeordneten Knotens zu erweitern.

Implementierungsmethode: el-tree (Baumsteuerung in Element-UI), z-tree

el-tree

Verwenden Sie diese Methode, um die Datenzeile des aktuell angeklickten Knotens abzurufen. Bestimmen Sie anhand der Attribute der Zeile, ob der aktuelle Knoten ein übergeordneter Knoten ist, fordern Sie die Schnittstelle an und übertragen Sie die Daten des untergeordneten Knotens am aktuellen Knoten, aber das direkte Einfügen einer bestimmten Position war zu diesem Zeitpunkt noch nicht einfach. Obwohl es schließlich implementiert wurde, war es nicht anwendbar Dies führt dazu, dass der erste Klick auf den übergeordneten Knoten nicht direkt erweitert wird, da beim ersten Mal Daten angefordert werden. Daher wird er beim zweiten Klick nicht erweitert, da die Daten eingefügt wurden. Dies ist jedoch offensichtlich nicht möglich und sehr unmenschlich.

Ich weiß nicht, ob die Art und Weise, wie ich damit umgegangen bin, falsch ist oder so. Angesichts der Zeit habe ich mir die dynamischen Ladedaten von el-tree nicht im Detail angesehen, also habe ich sie hier übersprungen.

Z-Tree

Einführung in Z-Tree und Stile

import  'ztree'import 'ztree/css/metroStyle/metroStyle.css'import $ from 'jquery'
Nach dem Login kopieren

Konfigurationsinformationen

shuyusetting:{
          view: {
            showLine: false
          },
          data: {
            simpleData: {
              enable: true
            }
          },
          callback: {
            onClick: this.shuyuOnClick,  //点击函数
            onExpand: this.shuyuOnExpand, // 展开内容          }
        },
Nach dem Login kopieren

Referenz-Z-Baum

 <p  style="cursor: pointer;min-height: 200px; max-height:300px; overflow-y: auto" >
       <ul id="shuyuSelect" class="ztree"    style=" width: 230px; height: 30%;overflow:auto;cursor: pointer; " ></ul>  // 注意id,下面需要用到id
   </p>
Nach dem Login kopieren

Initialisieren Sie das Steuerelement und zeigen Sie die Daten der obersten Ebene an var params= new Object();

<em><span style="color: #0000ff"></span>this.$http.post(this.ip + &#39;/xhhms/rest/interRemoteReportController/v1/getKnowledge&#39;, params, {<br/>            headers: {<br/>              &#39;X-AUTH-TOKEN&#39;: this.token<br/>            }<br/>          }).then((res) => {<br/>            var data = JSON.parse(res.data);<br/>            //console.log(data);<br/>            if (!!data&&data.status=="1") {<br/>              $.fn.zTree.init($("#shuyuSelect"), this.shuyusetting, data.data);  // 初始化数据  id需要和上面一样  第二个是配置信息  第三个是顶层的数据<br/><br/>              // console.log(this.knowledgetreedata);<br/>            } else {<br/>              return false;<br/>            }<br/>          }, (err) => {<br/>            console.log(err);<br/>          });<span style="color: #000000"><br/></span></em>
Nach dem Login kopieren

Als nächstes folgen zwei entsprechend konfigurierte Funktionen

    shuyuOnClick(event, treeId, treeNode){
        if(!treeNode.isParent){   // 判断当前节点不是父级节点 //根据自己的数据来 
          var acknowledgeid = treeNode.id;
          var params= {id:acknowledgeid};
          this.$http.post(this.ip+&#39;/xhhms/rest/interRemoteReportController/v1/getKnowledgeByid&#39;, params, {
            headers: {&#39;X-AUTH-TOKEN&#39;: localStorage.getItem(&#39;token&#39;) }
          }).then((res) => {
            var data = JSON.parse(res.data);
            if (!!data&&data.status=="1") {
              //console.log(data.data);
              document.getElementById(&#39;edit-iframe&#39;).contentWindow.postMessage(JSON.stringify({"DescriptionToReport":data.data.description}),"*");
              document.getElementById(&#39;edit-iframe&#39;).contentWindow.postMessage(JSON.stringify({"ConclusionToReport":data.data.conclusion}) ,"*");
              this.description = data.data.description;
              this.conclusion = data.data.conclusion;
            } else {
              return false;
            }
          }, (err) => {
                console.log(err);
          });
        }else{
          // 是父级  请求子级增加内容
          this.shuyuOnExpand(event, treeId, treeNode);
        }
      },
      shuyuOnExpand(event, treeId, treeNode){
        console.log("shuyuOnExpand");
          var treeNodeId = treeNode.id;
          if(treeNodeId == 0){
            return;
          }else{
          var params={parentid:treeNodeId};
          this.$http.post(this.ip + &#39;/xhhms/rest/interRemoteReportController/v1/getKnowledge&#39;, params, {
            headers: {&#39;X-AUTH-TOKEN&#39;: localStorage.getItem(&#39;token&#39;) }
          }).then((res) => {
            var data = JSON.parse(res.data);
            console.log("data");
            if (!!data&&data.status=="1") {
              var tree = $.fn.zTree.getZTreeObj("shuyuSelect"); //重新渲染
              if (!treeNode.zAsync){
                  tree.addNodes(treeNode, data.data);
                  treeNode.zAsync = true;
              } else{
                  tree.reAsyncChildNodes(treeNode, "refresh");  //刷新内容
              }
            } else {
              return false;
            }
          }, (err) => {
                console.log(err);
          });
          }

      },
Nach dem Login kopieren

Das sind zwei Kernfunktionen.

Verwandte Empfehlungen:

Über die Analyse der Ereignisschleife in Node

Klassen- und Stilbindung in Vue und Bedingungen und Analyse der Listenwiedergabe

Das obige ist der detaillierte Inhalt vonWie Vue die Baumsteuerung Z-Tree verwendet, um Daten dynamisch hinzuzufügen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!