欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Vue實現(xiàn)一個樹組件的示例

 更新時間:2020年11月06日 08:47:26   作者:秋荷雨翔  
這篇文章主要介紹了使用Vue實現(xiàn)一個樹組件的示例,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

HTML代碼:

<!DOCTYPE html>
<html>
<head>
  <title>Vue Demo</title>

  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <style type="text/css">
    /* span樣式 */
    .treeviewitem-span {
      font-size: 14px;
    }

    /* 箭頭樣式 */
    .treeviewitem-arrow-icon {
      margin-top: 3px;
      margin-left: 3px;
      margin-right: 3px;
      float: left;
      width: 0;
      height: 0;
      border-top-width: 6px;
      border-right-width: 0px;
      border-bottom-width: 6px;
      border-left-width: 6px;
      border-style: solid;
      border-color: transparent transparent transparent #666666;
      transform: rotate(0deg);
    }

    /* 90度旋轉(zhuǎn)箭頭樣式 */
    .treeviewitem-arrow-icon90 {
      margin-top: 3px;
      margin-left: 3px;
      margin-right: 3px;
      float: left;
      width: 0;
      height: 0;
      border-top-width: 6px;
      border-right-width: 0px;
      border-bottom-width: 6px;
      border-left-width: 6px;
      border-style: solid;
      border-color: transparent transparent transparent #666666;
      transform: rotate(90deg);
    }

    /* 模板隱藏 */
    template {
      display: none;
    }
  </style>

  <script type="text/javascript" src="vue.js"></script>
  <script type="text/javascript">

  </script>
</head>
<body>
  <!-- treeviewitem模板 -->
  <template id="treeviewitem">
    <div>
      <div style="background-color:transparent; cursor:default; height:25px;"><div v-on:click="expand" style="width:16px; height:16px; float:left; background-color:transparent;"><span v-bind:class="[self.expand ? 'treeviewitem-arrow-icon90':'treeviewitem-arrow-icon']" v-if="isLeaf"></span></div><input type="checkbox" v-on:click="checkboxClick" v-model="self.selected" /><span v-on:click="itemClick" class="treeviewitem-span">{{ self.name }}</span></div>
      <div v-if="self.expand" v-for="item in items" style="margin-left:20px;">
        <treeviewitem v-bind:items="item.items" v-bind:self="item"></treeviewitem>
      </div>
    </div>
  </template>

  <!-- treeview模板 -->
  <template id="treeview">
    <div>
      <div v-for="item in items">
        <treeviewitem v-bind:items="item.items" v-bind:self="item"></treeviewitem>
      </div>
    </div>
  </template>

  <div id="app">
    <!-- 使用treeview組件 -->
    <treeview v-bind:items="items"></treeview>
    <br />
    <button onclick="showSelectedResult()">勾選結(jié)果</button>
  </div>

  <script type="text/javascript">
    //定義treeviewitem組件
    Vue.component('treeviewitem', {
      props: ['items', 'self'],
      template: '#treeviewitem',
      methods: {
        itemClick: function (d) {
          alert("您單擊了節(jié)點:" + this.self.name);
        },
        checkboxClick: function (e) {
          var checkChild;
          checkChild = function (items, checked) {
            for (var i = 0; i < items.length; i++) {
              var item = items[i];
              item.selected = checked;
              if (item.items) {
                checkChild(item.items, checked)
              }
            }
          };

          if (e.target.checked) {
            checkChild(this.items, true);
          } else {
            checkChild(this.items, false);
          }
        },
        expand: function (e) {
          if (this.self.expand) {
            this.self.expand = false;
          } else {
            this.self.expand = true;
          }
        }
      },
      computed: {
        isLeaf: function () {
          if (this.items && this.items.length > 0) {
            return true;
          }
          return false;
        }
      }
    });

    //定義treeview組件
    Vue.component('treeview', {
      props: ['items'],
      template: '#treeview'
    });

    //定義vm
    var vm = new Vue({
      el: '#app',
      methods: {
        /**
         * @description 獲取勾選結(jié)果
         */
        getSelected: function (items) {
          if (!items) items = this.items;

          var result = [];
          for (var i = 0; i < items.length; i++) {
            var item = items[i];
            if (item.selected) {
              result.push(item.name);
            }
            if (item.items) {
              var childSelected = this.getSelected(item.items);
              for (var k = 0; k < childSelected.length; k++) {
                result.push(childSelected[k]);
              }
            }
          }
          return result;
        }
      },
      data: {
        items: [
          {
            name: '條目1',
            expand: true,
            selected: false,
            items: [
              {
                name: '條目11',
                expand: true,
                selected: false,
                items: [
                  {
                    name: '條目111',
                    expand: true,
                    selected: true,
                  }
                ]
              },
              {
                name: '條目12',
                expand: false,
                selected: false,
                items: [
                  {
                    name: '條目121',
                    expand: true,
                    selected: false,
                  },
                  {
                    name: '條目122',
                    expand: true,
                    selected: false,
                    items: [
                      {
                        name: '條目1221',
                        expand: true,
                        selected: false
                      },
                      {
                        name: '條目1222',
                        expand: true,
                        selected: false
                      }
                    ]
                  }
                ]
              },
              {
                name: '條目13',
                expand: true,
                selected: false
              }
            ]
          },
          {
            name: '條目2',
            expand: true,
            selected: false
          },
          {
            name: '條目3',
            expand: true,
            selected: false,
            items: [
              {
                name: "條目31",
                expand: true,
                selected: false
              }
            ]
          }
        ]
      }
    })

    //顯示勾選結(jié)果
    function showSelectedResult() {
      var selected = vm.getSelected();
      alert("您勾選了:" + selected.join(', '));
    }
  </script>
</body>
</html>

效果圖:

以上就是使用Vue實現(xiàn)一個樹組件的示例的詳細內(nèi)容,更多關于vue 實現(xiàn)樹組件的資料請關注腳本之家其它相關文章!

相關文章

  • 干貨!教大家如何選擇Vue和React

    干貨!教大家如何選擇Vue和React

    Vue和React之間如何選擇,這篇文章主要為大家詳細介紹了Vue和React兩者之間的相同之處,教大家該如何進行選擇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue中v-if失效原因及解決方法

    vue中v-if失效原因及解決方法

    本文主要介紹了vue中v-if失效原因及解決方法,一般v-if失效都是和綁定變量有關,下面就來具體介紹一下,感興趣的可以了解一下
    2023-09-09
  • Vue組件的渲染流程詳細講解

    Vue組件的渲染流程詳細講解

    在Vue核心中除了響應式原理外,視圖渲染也是重中之重,下面這篇文章主要給大家介紹了關于Vue組件的渲染流程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • vue.js實現(xiàn)簡單輪播圖效果

    vue.js實現(xiàn)簡單輪播圖效果

    這篇文章主要為大家詳細介紹了vue.js實現(xiàn)簡單輪播圖效果的相關代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue3項目中引入ElementUI并使用的示例詳解

    Vue3項目中引入ElementUI并使用的示例詳解

    ElementUI是一個強大的PC端UI組件框架,它不依賴于vue,但是卻是當前和vue配合做項目開發(fā)的一個比較好的ui框架,本文主要介紹了如何在vue3中引入使用ElementUI,需要的可以參考一下
    2023-06-06
  • vue動態(tài)加載SVG文件并修改節(jié)點數(shù)據(jù)的操作代碼

    vue動態(tài)加載SVG文件并修改節(jié)點數(shù)據(jù)的操作代碼

    這篇文章主要介紹了vue動態(tài)加載SVG文件并修改節(jié)點數(shù)據(jù)的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • vue打包優(yōu)化時配置webpack的8大方案小結(jié)

    vue打包優(yōu)化時配置webpack的8大方案小結(jié)

    vue-cli?生成的項目通常集成Webpack?,在打包的時候,需要webpack來做一些事情,這里我們希望它可以壓縮代碼體積,提高運行效率,本文為大家整理了8大webpack配置方案,希望對大家有所幫助
    2024-02-02
  • Vue拖拽排序組件Vue-Slicksort解讀

    Vue拖拽排序組件Vue-Slicksort解讀

    這篇文章主要介紹了Vue拖拽排序組件Vue-Slicksort,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue項目下載文件重命名監(jiān)測進度demo

    vue項目下載文件重命名監(jiān)測進度demo

    這篇文章主要為大家介紹了vue項目下載文件重命名監(jiān)測進度demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Vue.js實現(xiàn)可編輯的表格

    Vue.js實現(xiàn)可編輯的表格

    這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)可編輯的表格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論