vue 父組件調用子組件內置方法


背景介紹:外派到泰康做項目。這個項目中有個選擇組織的功能,是一個樹樁結構的懶加載,於是我就element-ui的tree組件封裝了一個公共的組件。

                  但是后來發現他們的公司組織結構不是都請求的同一個接口,於是想着組件里面給加個url參數就可以了。但是他們的人員說一些參數數據都不同,

                  非要我在請求接口時在每個頁面的父組件分別調用。我想着你們不覺得麻煩我也OK啦。然后就遇到了需要在父組件調用子組件方法的問題。

tree組件有個load 方法,我們要做的是在父組件能調用這個方法,並將他的默認參數node和resolve傳過去
<el-tree v-show="isShowTree" class="bgClFFF treeBox" ref="selectTree" :data="treeData" node-key="label" accordion :props="defaultProps" @node-click="handleNodeClick" :expand-on-click-node="false" lazy :load="loadNodeChild" :render-content="renderContent" ></el-tree>

解決的方法如下:

子組件props里定義一個方法,用於接受父組件傳過來的方法 
props: { loadNode: { type: Function,
default: "" }, }
methods里子組件觸發加載數據方法時,調用父組件的方法,並將參數傳過去
 loadNodeChild(node, resolve) {
  this.loadNode(node, resolve);
 },
// 父組件調用
  <Tree
   @chooseNewNode = "getTreeNode"
   :treeData="treeData"
    :loadNode = "loadNode"
  >
  </Tree>
然后在父組件的methods里調用這個方法
  loadNode(node, resolve){
    if (this.isFirstLoad) {
     // 第一次加載的數據
      resolve(this.treeData);
      this.isFirstLoad = false;
    } else {
     // 根據node的id發送請求,resolve(后端返回的data數組)
    if (node.data.id == "50000075O") {
      resolve(this.loadData);
    } else {
     resolve([]);
    }
   }
  }

 

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM