最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue基于Element構(gòu)建自定義樹的示例代碼

 更新時間:2017年09月19日 16:34:44   作者:Chee  
本篇文章主要介紹了vue基于Element構(gòu)建自定義樹的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

說明

做項(xiàng)目的時候要使用到一個自定義的樹形控件來構(gòu)建表格樹,在github上搜了一下沒有搜索到合適的(好看的)可以直接用的,查看Element的組件說明時發(fā)現(xiàn)它的Tree控件可以使用render來自定義節(jié)點(diǎn)樣式,于是基于它封裝了一個可以增、刪、改的樹形組件,現(xiàn)在分享一下它的使用與實(shí)現(xiàn)。

控件演示

github上掛的gif可能會比較卡,有沒有大佬知道還有哪里可以掛靜態(tài)資源的,謝謝。。!

控件使用

概要

  • 基于element-ui樹形控件的二次封裝
  • 提供編輯、刪除節(jié)點(diǎn)的接口
  • 提供一個next鉤子,在業(yè)務(wù)處理失敗時可使用next(false)回滾操作
  • 控件源碼見 github

文檔

props

屬性 說明 類型
value 源數(shù)據(jù),可使用v-model雙向綁定 Array

events

事件名 說明 參數(shù)
SaveEdit 點(diǎn)擊編輯或者添加樹節(jié)點(diǎn)后的保存事件 (父節(jié)點(diǎn)數(shù)據(jù)、當(dāng)前節(jié)點(diǎn)數(shù)據(jù)、next)
DelNode 刪除節(jié)點(diǎn)事件 (父節(jié)點(diǎn)數(shù)據(jù)、當(dāng)前節(jié)點(diǎn)數(shù)據(jù)、next)
NodeClick 節(jié)點(diǎn)點(diǎn)擊事件 (當(dāng)前節(jié)點(diǎn)數(shù)據(jù))

源數(shù)據(jù)描述

屬性 說明
value 樹節(jié)點(diǎn)的唯一標(biāo)識
label 樹節(jié)點(diǎn)的顯示名稱
status (1:編輯狀態(tài))(0:顯示狀態(tài))(-1不可編輯狀態(tài))
children 子節(jié)點(diǎn)數(shù)據(jù)

調(diào)用示例

 <m-tree
  v-model="tableTree"
  @SaveEdit="SaveEdit"
  @DelNode="DelNode"
  @NodeClick="handleNodeClick"></m-tree>

SaveEdit(parentNode,data,next){
  var param = {
   parentNode:parentNode,
   node:data
  }
  this.$http.post(URL,param).then((response) => {
   if(response.status == 200){
    next(true,response.body.data.nodeId)
   }else{
    next(false)
   }
  })
}

實(shí)現(xiàn)方式

構(gòu)建子節(jié)點(diǎn)的模板

 <span class="span_item">
  <span @click="Expanded">
   <Input v-if="node.status == 1" style="width: 100px;" v-model="node.label" size="small" ></Input>
   <Icon v-if="node.status == 0" type="asterisk"></Icon>
   <Icon v-if="node.status == -1" type="ios-keypad-outline"></Icon>
   <span v-if="node.status != 1">{{node.label}}</span>
  </span>
  <span v-if="node.status == 1">
   <Button style="margin-left: 8px;" size="small" type="success" icon="checkmark-circled" @click="SaveEdit">確認(rèn)</Button>
   <Button style="margin-left: 8px;" size="small" type="ghost" icon="checkmark-circled" @click="CancelEdit">取消</Button>
  </span>
  <span class="span_icon">
    <Icon v-if="node.status == 0" style="margin-left: 8px" color="gray" type="edit" size="16" @click.native="OpenEdit"></Icon>
    <Icon v-if="node.status == 0" style="margin-left: 8px" type="plus-round" color="gray" size="16" @click.native="Append"></Icon>
    <Icon v-if="node.status == 0&&node.children.length < 1" style="margin-left: 8px" type="ios-trash" color="red" size="18" @click.native="Delete"></Icon>
  </span>
 </span>

子節(jié)點(diǎn)通過$emit通知父節(jié)點(diǎn)事件

SaveEdit(){
  //保存節(jié)點(diǎn)事件
  this.$emit('SaveEdit',this.nodeData)
},

父節(jié)點(diǎn)核心實(shí)現(xiàn),使用renderContent函數(shù)加載子節(jié)點(diǎn)模板,點(diǎn)擊保存節(jié)點(diǎn)時將業(yè)務(wù)參數(shù)保存在runParam中用于在業(yè)務(wù)操作失敗(網(wǎng)絡(luò)請求失敗、服務(wù)端異常等情況)的數(shù)據(jù)回滾

  <el-tree
   class="filter-tree"
   style="overflow:auto;"
   :data="treeData"
   :filter-node-method="filterNode"
   @node-click="handleNodeClick"
   ref="tree"
   node-key="value"
   :expand-on-click-node="false"
   :render-content="renderContent"
   default-expand-all>
  </el-tree>
  //子節(jié)點(diǎn)模板
  renderContent(h, { node, data, store }) {
    return h(TreeItem,{
     props:{
      value:data,
      treeNode:node
     },
     on:{
      input:(node)=>{
       data = node
      },
      Append: () => {
       node.expanded = true
       data.children.push({ value: this.$utilHelper.generateUUID(), label: '請輸入模塊名稱', children: [],status:1,isAdd:true })
      },
      //保存節(jié)點(diǎn)
      SaveEdit:(nodeData)=> {
       //遞歸查找父節(jié)點(diǎn)
       var parentNode = this.$utilHelper.getNode(this.treeData,data.value).parentNode
       this.runParam.parentNode = parentNode
       this.runParam.data = data
       this.runParam.nodeData = nodeData
       this.$emit('SaveEdit',parentNode,data,this.CanSaveNext)
      }
     }
    })
   }

操作結(jié)果鉤子,如果next函數(shù)傳入false則判定操作失敗,使用runParam中的參數(shù)進(jìn)行回滾,該節(jié)點(diǎn)的編輯保存操作將無效

源碼demo:calebman/vue-DBM

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue創(chuàng)建頭部組件示例代碼詳解

    Vue創(chuàng)建頭部組件示例代碼詳解

    本文通過實(shí)例代碼給大家介紹了Vue創(chuàng)建頭部組件的相關(guān)知識,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-10-10
  • vue實(shí)現(xiàn)驗(yàn)證碼倒計時按鈕

    vue實(shí)現(xiàn)驗(yàn)證碼倒計時按鈕

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)驗(yàn)證碼倒計時按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue實(shí)現(xiàn)動態(tài)面包屑導(dǎo)航

    vue實(shí)現(xiàn)動態(tài)面包屑導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)動態(tài)面包屑導(dǎo)航的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue中動畫與過渡的使用教程

    Vue中動畫與過渡的使用教程

    最近在寫vue的一個項(xiàng)目要實(shí)現(xiàn)過渡的效果,雖然vue動畫不是強(qiáng)項(xiàng),庫也多,但是基本的坑還是得踩扎實(shí),下面這篇文章主要給大家介紹了關(guān)于Vue中實(shí)現(xiàn)過渡動畫效果的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue3 el-form-item如何自定義label標(biāo)簽內(nèi)容

    vue3 el-form-item如何自定義label標(biāo)簽內(nèi)容

    這篇文章主要介紹了vue3 el-form-item如何自定義label標(biāo)簽內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中的slot封裝組件彈窗

    vue中的slot封裝組件彈窗

    這篇文章主要介紹了vue中的slot封裝組件彈窗,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue-cli創(chuàng)建項(xiàng)目ERROR?in?Conflict:?Multiple?assets?emit?different?content?to?the?same?filename?index.html問題的解決辦法

    vue-cli創(chuàng)建項(xiàng)目ERROR?in?Conflict:?Multiple?assets?emit?dif

    最近vue/cli創(chuàng)建項(xiàng)目后出現(xiàn)了錯誤,下面這篇文章主要給大家介紹了關(guān)于vue-cli創(chuàng)建項(xiàng)目ERROR?in?Conflict:?Multiple?assets?emit?different?content?to?the?same?filename?index.html問題的解決辦法,需要的朋友可以參考下
    2023-02-02
  • 聊聊Vue 中 title 的動態(tài)修改問題

    聊聊Vue 中 title 的動態(tài)修改問題

    這篇文章主要介紹了 Vue 中 title 的動態(tài)修改問題,文中通過兩種方案給大家介紹了title的傳遞問題 ,需要的朋友可以參考下
    2019-06-06
  • Vue自定義加水波紋效果指令實(shí)例代碼

    Vue自定義加水波紋效果指令實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Vue自定義加水波紋效果指令的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02
  • Vue history模式刷新頁面404問題及解決

    Vue history模式刷新頁面404問題及解決

    文章介紹了Vue單頁應(yīng)用中出現(xiàn)404錯誤的原因,以及如何通過配置Nginx和使用Vue Router的hash模式來解決這個問題,同時,文章還簡要解釋了單頁應(yīng)用的概念及其優(yōu)點(diǎn)和缺點(diǎn),并討論了Router的實(shí)現(xiàn)方式
    2024-12-12

最新評論

哈密市| 辛集市| 青田县| 郎溪县| 家居| 贵州省| 井冈山市| 葫芦岛市| 元氏县| 祁阳县| 黑山县| 丰台区| 长汀县| 开江县| 石林| 呼伦贝尔市| 荣成市| 中江县| 兴隆县| 龙岩市| 海阳市| 内江市| 东宁县| 固始县| 抚州市| 遂川县| 寿宁县| 壶关县| 商南县| 定结县| 苍山县| 噶尔县| 怀宁县| 阿巴嘎旗| 浑源县| 平陆县| 乌鲁木齐市| 威信县| 彭泽县| 翼城县| 蒙自县|