使用Vue实现一个树组件的示例
网络编程 2021-07-04 14:06www.168986.cn编程入门
这篇文章主要介绍了使用Vue实现一个树组件的示例,帮助大家更好的理解和使用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-: 3px; margin-left: 3px; margin-right: 3px; float: left; width: 0; height: 0; border--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度旋转箭头样式 / .treeviewitem-arrow-icon90 { margin-: 3px; margin-left: 3px; margin-right: 3px; float: left; width: 0; height: 0; border--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()">勾选结果</button> </div> <script type="text/javascript"> //定义treeviewitem组件 Vue.ponent('treeviewitem', { props: ['items', 'self'], template: '#treeviewitem', methods: { itemClick: function (d) { alert("您单击了节点" + 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; } } }, puted: { isLeaf: function () { if (this.items && this.items.length > 0) { return true; } return false; } } }); //定义treeview组件 Vue.ponent('treeview', { props: ['items'], template: '#treeview' }); //定义vm var vm = new Vue({ el: '#app', methods: { / @description 获取勾选结果 / 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 } ] } ] } }) //显示勾选结果 function showSelectedResult() { var selected = vm.getSelected(); alert("您勾选了" + selected.join(', ')); } </script> </body> </html>
效果图
以上就是使用Vue实现一个树组件的示例的详细内容,更多关于vue 实现树组件的资料请关注狼蚁SEO其它相关文章!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程