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

vue實(shí)現(xiàn)節(jié)點(diǎn)增刪改功能

 更新時(shí)間:2019年09月26日 15:47:52   作者:小羽向前跑  
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)節(jié)點(diǎn)增刪改功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue實(shí)現(xiàn)節(jié)點(diǎn)增刪改功能的具體代碼,供大家參考,具體內(nèi)容如下

效果:

增刪改功能 tree.vue組件代碼:

<template>
 <div>
  <div class="all-div" v-if="model.name">
   <div class="itemRow" :style="{ marginLeft:model.level*20+'px' }">
    <span v-show="model.children.length" @click="expandOrCollapse">
     <img v-if="model.isOpen" src="../../assets/img/login_logo.png">
     <img v-else src="../../assets/img/login_logo2.png">
    </span>
    <div class="hover-div" @mouseover="flag=true" @mouseout="flag=false">
     <span @click="jump(model.url)">{{model.name}}</span>
     <span v-show="flag==true" @click="add" style="fontsize:40px;color:red;">+</span>
     <span v-show="flag==true" @click="remove(model)"><img src="../../assets/img/del.png"></span>
     <span v-show="flag==true" @click="edit" style="color:green;">修改</span>
     <!--<span class="asce" v-show="model.children.length" @click="orderAsce">↑</span>
    <span class="desc" v-show="model.children.length" @click="orderDesc">↓</span>-->
    </div>
 
   </div>
  </div>
  <navigation v-if="model.isOpen" v-for="row in model.children" :key="row.name" :model="row" :length="model.children.length"></navigation>
 </div>
</template>
 
<script>
 export default {
  name: 'navigation',
  // 使用`編輯樹`組件需要傳遞的數(shù)據(jù)
  props: {
   // 編輯樹對象
   model: {
    type: Object
   },
 
   length: {
    type: Number
   }
  },
 
  data () {
   return {
    flag:false
 
   }
  },
 
  methods: {
   // 添加節(jié)點(diǎn)
   add(){
    let val = prompt("請輸入要添加的節(jié)點(diǎn)的名稱:");
    if (val) {
     this.model.children.push({
      name: val,
      level: this.model.level + 1,
      isOpen: true,
      children: []
     });
    }
 
   },
 
   // 移除節(jié)點(diǎn)
   remove(model){
    var self = this;
    alert('確認(rèn)刪除嗎?');
    if (self.$parent.model) {
     self.$parent.model.children.forEach((item, index) => {
      if (item.name == model.name) {
      self.$parent.model.children.splice(index, 1);
     }
    })
    }
   },
 
   // 編輯節(jié)點(diǎn)名稱
   edit(){
    var self = this;
    let rename = prompt('請輸入修改后的節(jié)點(diǎn)名稱:');
    // 使用正則進(jìn)行重命名的差錯(cuò)校驗(yàn)
    if (!rename.length) {
     alert('請輸入正確的節(jié)點(diǎn)名稱');
     return;
    }
    self.model.name = rename;
   },
 
   /**
    * 展開/收起功能
    */
   expandOrCollapse(){
    this.model.isOpen = !this.model.isOpen;
   },
   jump(url){
    var self = this;
    self.$router.push({path:url})
   }
 
   /*// 升序排列
    orderAsce(){
    function compare(property) {
    return function (a, b) {
    var value1 = a[property];
    var value2 = b[property];
    return value1 - value2;
    }
    }
    this.model.children.sort(compare('name'));
    },
    // 降序排列
    orderDesc(){
    this.orderAsce();
    this.model.children.reverse();
    }*/
  },
 }
</script>
 
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
 .all-div{
  margin-left: 6%;
 
 }
 .itemRow {
  text-align: left;
  padding-top: 2%;
  padding-bottom: 2%;
 }
 .itemRow span,.itemRow img{
  cursor: pointer;
 }
 .itemRow span{
  font-size: 1.1vw;
 }
 .hover-div{
  display:inline-block;
 }
 
 
</style>

父組件中引用代碼:

<template>
 <div id="all">
  <tree :model="root" :length="length"></tree>
 </div>
</template>
<style scoped>
 #all{
  width:100%;
  height: 100%;
 }
 
</style>
<script>
 import tree from './tree.vue'
 export default{
  data(){
   return{
    root:{
     name:"根節(jié)點(diǎn)",
     level:0,
     isOpen:true,
     children:[
      {
       name:"節(jié)點(diǎn)1",
       level:1,
       url:"/homePage/middle/navLeftFirst",
       isOpen:false,
       children:[
        {
         name:"節(jié)點(diǎn)1-1",
         level:2,
         isOpen:true,
         children:[]
        },
        {
         name:"節(jié)點(diǎn)1-2",
         level:2,
         isOpen:true,
         children:[]
        }
       ]
      },
      {
       name:"節(jié)點(diǎn)2",
       level:1,
       url:"/homePage/middle/navLeftSecond",
       isOpen:false,
       children:[
        {
         name:"節(jié)點(diǎn)2-1",
         level:2,
         isOpen:true,
         children:[]
        },
        {
         name:"節(jié)點(diǎn)2-2",
         level:2,
         isOpen:true,
         children:[]
        }
       ]
 
      }
     ]
    },
    length:2
   }
  },
  components:{
   tree
  }
 }
</script> 

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

相關(guān)文章

  • Vue+Element-ui表單resetFields無法重置問題

    Vue+Element-ui表單resetFields無法重置問題

    本文主要介紹了Vue+Element-ui表單resetFields無法重置問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 一文帶你詳細(xì)了解Vue中的v-for

    一文帶你詳細(xì)了解Vue中的v-for

    v-for循環(huán)遍歷數(shù)據(jù),永遠(yuǎn)不要把v-if和v-for同時(shí)用在同一個(gè)元素上,下面這篇文章主要給大家介紹了關(guān)于如何通過一文帶你詳細(xì)了解Vue中v-for的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vue+element-ui中form輸入框無法輸入問題的解決方法

    vue+element-ui中form輸入框無法輸入問題的解決方法

    很多初次接觸element-ui的同學(xué),在用到element form組件時(shí)可能會遇到input框無法輸入文字的問題,下面這篇文章主要給大家介紹了關(guān)于vue+element-ui中form輸入框無法輸入問題的解決方法,需要的朋友可以參考下
    2023-04-04
  • Vue3+vite實(shí)現(xiàn)使用svg可改變顏色的全過程

    Vue3+vite實(shí)現(xiàn)使用svg可改變顏色的全過程

    Vue3 + Vite 使用 SVG 的方法主要是為了引入和利用圖標(biāo)庫、自定義組件以及通過插件簡化項(xiàng)目構(gòu)建過程,這篇文章給大家介紹了Vue3+vite實(shí)現(xiàn)使用svg可改變顏色的全過程,需要的朋友可以參考下
    2024-07-07
  • vue3+vue-router+vite實(shí)現(xiàn)動態(tài)路由的全過程

    vue3+vue-router+vite實(shí)現(xiàn)動態(tài)路由的全過程

    動態(tài)路由是根據(jù)不同情況實(shí)時(shí)變化的路由,在權(quán)限管理系統(tǒng)中,動態(tài)路由常用于根據(jù)用戶角色分配不同的菜單和功能,這篇文章主要介紹了vue3+vue-router+vite實(shí)現(xiàn)動態(tài)路由的相關(guān)資料,需要的朋友可以參考下
    2024-10-10
  • Vue3中的pinia使用方法總結(jié)(建議收藏版)

    Vue3中的pinia使用方法總結(jié)(建議收藏版)

    Pinia是Vue的存儲庫,它允許您跨組件/頁面共享狀態(tài),Pinia的成功可以歸功于他管理存儲數(shù)據(jù)的獨(dú)特功,下面這篇文章主要給大家介紹了關(guān)于Vue3中pinia使用方法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue頁面離開后執(zhí)行函數(shù)的實(shí)例

    vue頁面離開后執(zhí)行函數(shù)的實(shí)例

    下面小編就為大家分享一篇vue頁面離開后執(zhí)行函數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue使用Print.js打印div方式(選中區(qū)域的html)

    Vue使用Print.js打印div方式(選中區(qū)域的html)

    這篇文章主要介紹了Vue使用Print.js打印div方式(選中區(qū)域的html),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue+highCharts實(shí)現(xiàn)可選范圍的圖表

    vue+highCharts實(shí)現(xiàn)可選范圍的圖表

    這篇文章主要為大家詳細(xì)介紹了vue+highCharts實(shí)現(xiàn)可選范圍的圖表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的方法實(shí)例

    前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的方法實(shí)例

    一開始我還以為vue的路由只能用在工程化的項(xiàng)目里面,其實(shí)不然,下面這篇文章主要給大家介紹了關(guān)于前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評論

赤峰市| 聊城市| 靖宇县| 永吉县| 广昌县| 麦盖提县| 四会市| 柘城县| 安西县| 成武县| 常州市| 沈阳市| 仁化县| 冷水江市| 开平市| 寿阳县| 陈巴尔虎旗| 修文县| 岳普湖县| 公安县| 烟台市| 巴彦淖尔市| 逊克县| 五寨县| 惠来县| 莒南县| 扬中市| 桐城市| 鹿泉市| 德保县| 大方县| 玉田县| 砀山县| 万盛区| 赣州市| 无极县| 咸宁市| 灌南县| 西昌市| 辉县市| 平阳县|