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

ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn)

 更新時間:2020年02月27日 11:35:26   作者:java_xxxx  
這篇文章主要介紹了ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

其實(shí)tree的有些方法用起來是很方便的,
this.$refs.tree.getCheckedKeys();這個原生態(tài)的方法。官方文檔上說的是,返回一個數(shù)組。有了這個方法,我們就可以得到選中的每個節(jié)點(diǎn)的id,拿到了id,那所有的問題就迎刃而解了。
廢話不多說,直接上代碼

html

<div id="app">
  <el-row>
    <el-button @click="checkedKeys">得到節(jié)點(diǎn)id</el-button>
    <el-button @click="addNode">添加節(jié)點(diǎn)</el-button>
    <el-button @click="checkedKeys">修改節(jié)點(diǎn)</el-button>
    <el-button @click="deleteNode">刪除節(jié)點(diǎn)</el-button>
    <br/>
    <br/>

    <el-tree
         ref="tree"
         :data="treeList"
         :props="defaultProps"
         @node-click="handleNodeClick"
         show-checkbox=true
         node-key="id"
         :check-strictly="true"
        >
    </el-tree>
    <el-input>輸入框</el-input>
    <el-dialog title="添加"
         :visible.sync="dialogVisible"
        >
      <el-form ref="form">
        <el-form-item label="節(jié)點(diǎn)父類型">
        <el-select placeholder="請選擇要添加節(jié)點(diǎn)的父節(jié)點(diǎn)" v-model="treeNode.parentId" @change="selectChange" >
          <el-option label="根節(jié)點(diǎn)" :value="0"></el-option>
          <el-option v-for="item in treeListData" :label="item.categoryName" :value="item.nodeId"></el-option>
        </el-select>
      </el-form-item>
          <el-form-item label="節(jié)點(diǎn)名稱">
            <el-input placeholder="請輸入節(jié)點(diǎn)名稱" v-model="treeNode.categoryName" style="width: 220px"></el-input>
          </el-form-item>
    </el-form>

      <span>
        <el-button @click="cancleSaveNode">
          取消
        </el-button>
        <el-button @click="saveNode">
          確定
        </el-button>
      </span>

    </el-dialog>

  </el-row>

</div>

js代碼

<script type="text/javascript">


  var _treeNode={
    nodeId:0,
    categoryName:"",
    parentId:0
  }

  var app = new Vue({
    el:'#app',
    data:{
      treeNode:_treeNode,
      treeList:[],
      treeListData:[], // 無層級結(jié)構(gòu)節(jié)點(diǎn)數(shù)據(jù)
      defaultProps:{
        children: 'childList',
        label: 'name'
        /* label: 'categoryName'*/
      },
      dialogVisible:false, // 對話框,默認(rèn)不打開
      api:{
        treeDataList:"/category/treeList.do",  // 得到節(jié)點(diǎn)數(shù)據(jù),無層級結(jié)構(gòu) GET
        saveTreeNode:"/category/saveTreeNode.do",  // 得到節(jié)點(diǎn)數(shù)據(jù),無層級結(jié)構(gòu) GET
        deleteTreeNode:"/category/deleTreeNode.do",
      }
    },
    methods: {
      cateListFunction: function () {
        $.ajax({
          type: "get",
          url: "/category/cateList.do",
          success: function (result) {
            app.cateList = result;
            app.treeList=result;
          }, error: function (result) {
          }
        });
      },
      // 點(diǎn)擊節(jié)點(diǎn)名稱觸發(fā)的事件
      handleNodeClick: function (data) {
        alert(data.id);
        console.log(data);
      },
      // 獲得選中的節(jié)點(diǎn)的key
      checkedKeys:function (data) {
        alert(JSON.stringify(this.$refs.tree.getCheckedKeys()));
      },
      // 添加節(jié)點(diǎn)查詢所有節(jié)點(diǎn)的方法
      addNode:function () {
        // 查詢所有節(jié)點(diǎn)數(shù)據(jù)無層級結(jié)構(gòu)
        app.getTreeNode();
        app.dialogVisible=true;
      },
      // 保存節(jié)點(diǎn)
      saveNode:function () {
       //alert(app.treeNode.categoryName+app.treeNode.parentId);
       axios.post(app.api.saveTreeNode,app.treeNode).then(function (resule) {
         app.dialogVisible=false;
         app.treeNode.parentId=0;
         app.treeNode.categoryName="";
         app.cateListFunction();
       });

      },
      cancleSaveNode:function () {
        app.dialogVisible=false;
        app.treeNode.parentId=0;
        app.treeNode.categoryName="";

      },
      // 下拉框選中事件
      selectChange:function (val) {
        // select控件的option綁定的值為節(jié)點(diǎn)的id,我們將值綁定在要添加的元素的父id
        //alert("得到節(jié)點(diǎn)類型"+val);
      },
      // 批量刪除節(jié)點(diǎn)(若有子節(jié)點(diǎn)則不予刪除)
      deleteNode:function () {
        app.getTreeNode();
        var str=[];
        str =this.$refs.tree.getCheckedKeys();
         if(str.length<=0){ // 因?yàn)関ue返回的是選中的key的數(shù)組
                    // ,如果沒有選擇任何元素返回 "[]",這是兩個元素,所以我們判斷長度為2時,為空
           app.$message.error("請至少選擇一個節(jié)點(diǎn)");
           return ;
         }
        for(var i in str){
          for(var j in app.treeListData){
            if(app.treeListData[j].parentId == str[i]){
              app.$message.error("父節(jié)點(diǎn)不可被刪除");
              return;
            }
          }
        }
        axios.post(this.api.deleteTreeNode,str).then(function (result) {
          app.$message({message: '刪除成功', type: 'success'});
          app.getTreeNode();
          app.cateListFunction();
        });

      },getTreeNode:function () {
        // 查詢所有節(jié)點(diǎn)數(shù)據(jù)無層級結(jié)構(gòu)
        axios.get(this.api.treeDataList)
          .then(
            function(result){
              // vue給我們封裝的得,我們所得到的數(shù)據(jù)在返回的對象的data屬性里
              app.treeListData=result.data;
            });
      }

    },
      created: function () {
        this.getTreeNode();
        this.cateListFunction();
      }
  });
</script>

controller

/**
   * 保存節(jié)點(diǎn)
   */
  @RequestMapping("/saveTreeNode.do")
  @ResponseBody
  public void saveTreeNode(@RequestBody TbCategory category){
    System.out.println(category.getCategoryName() +"------" +category.getParentId());
    categoryService.insert(category);
  }


  @RequestMapping("/deleTreeNode.do")
  @ResponseBody
  public void deleTreeNode(@RequestBody String str){

    System.out.println(str);
    String [] strIds = str.substring(1,str.length()-1).split(",");
    for(int i =0;i<strIds.length;i++){
      categoryService.delete(Long.valueOf(strIds[i])); // 1,2
    }
  }

以上代碼真的沒有什么好解釋的,大家直接按照我的代碼,就不會有問題了

截圖:

到此這篇關(guān)于ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)ElementUI el-tree節(jié)點(diǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+axios實(shí)現(xiàn)文件下載及vue中使用axios的實(shí)例

    vue+axios實(shí)現(xiàn)文件下載及vue中使用axios的實(shí)例

    這篇文章主要介紹了vue+axios實(shí)現(xiàn)文件下載及vue中使用axios的實(shí)例,需要的朋友可以參考下
    2018-09-09
  • vue使用echarts實(shí)現(xiàn)立體柱形圖

    vue使用echarts實(shí)現(xiàn)立體柱形圖

    這篇文章主要為大家詳細(xì)介紹了vue使用echarts實(shí)現(xiàn)立體柱形圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue利用sync語法糖實(shí)現(xiàn)modal彈框的項(xiàng)目實(shí)踐

    vue利用sync語法糖實(shí)現(xiàn)modal彈框的項(xiàng)目實(shí)踐

    本文主要介紹了vue利用sync語法糖實(shí)現(xiàn)modal彈框的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用vue編寫一個點(diǎn)擊數(shù)字計(jì)時小游戲

    使用vue編寫一個點(diǎn)擊數(shù)字計(jì)時小游戲

    這篇文章主要為大家詳細(xì)介紹了使用vue編寫一個點(diǎn)擊數(shù)字計(jì)時小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • mpvue 項(xiàng)目初始化及實(shí)現(xiàn)授權(quán)登錄的實(shí)現(xiàn)方法

    mpvue 項(xiàng)目初始化及實(shí)現(xiàn)授權(quán)登錄的實(shí)現(xiàn)方法

    這篇文章主要介紹了mpvue 項(xiàng)目初始化及實(shí)現(xiàn)授權(quán)登錄的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 在vue中路由使用this.$router.go(-1)返回兩次問題

    在vue中路由使用this.$router.go(-1)返回兩次問題

    這篇文章主要介紹了在vue中路由使用this.$router.go(-1)返回兩次問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue 自定義組件 v-model雙向綁定、 父子組件同步通信的多種寫法

    vue 自定義組件 v-model雙向綁定、 父子組件同步通信的多種寫法

    父子組件通信,都是單項(xiàng)的,很多時候需要雙向通信。這篇文章主要介紹了vue 自定義組件 v-model雙向綁定、 父子組件同步通信,需要的朋友可以參考下
    2017-11-11
  • vue3.0-monaco組件封裝存檔代碼解析

    vue3.0-monaco組件封裝存檔代碼解析

    這篇文章主要介紹了vue3.0-monaco組件封裝存檔代碼解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • Vue computed實(shí)現(xiàn)原理深入講解

    Vue computed實(shí)現(xiàn)原理深入講解

    computed又被稱作計(jì)算屬性,用于動態(tài)的根據(jù)某個值或某些值的變化,來產(chǎn)生對應(yīng)的變化,computed具有緩存性,當(dāng)無關(guān)值變化時,不會引起computed聲明值的變化。產(chǎn)生一個新的變量并掛載到vue實(shí)例上去
    2022-10-10
  • Vue利用ref屬性更改css樣式的操作方法

    Vue利用ref屬性更改css樣式的操作方法

    在Vue.js的應(yīng)用開發(fā)中,我們經(jīng)常會遇到需要動態(tài)修改DOM元素樣式的情況,Vue提供了多種方式來實(shí)現(xiàn)這一目標(biāo),其中ref是一個非常有用且靈活的工具,本文將深入探討如何在Vue項(xiàng)目中利用ref屬性來更改CSS樣式,并通過多個實(shí)例演示其具體用法,需要的朋友可以參考下
    2024-10-10

最新評論

五指山市| 泰顺县| 哈密市| 金山区| 屯昌县| 镇安县| 白水县| 三江| 沂水县| 长宁区| 林芝县| 琼结县| 民和| 陆川县| 行唐县| 兴山县| 昌吉市| 渭南市| 景洪市| 衡阳县| 文昌市| 花垣县| 蓬莱市| 晋宁县| 介休市| 玉山县| 德阳市| 肥东县| 长兴县| 吕梁市| 延川县| 龙口市| 海原县| 洞头县| 屏东市| 博客| 漳州市| 勃利县| 齐齐哈尔市| 辉县市| 西充县|