当前位置:Gxlcms > JavaScript > Vue使用zTree插件封装树组件操作示例

Vue使用zTree插件封装树组件操作示例

时间:2021-07-01 10:21:17 帮助过:9人阅读

本文实例讲述了Vue使用zTree插件封装树组件操作。分享给大家供大家参考,具体如下:

1.通过npm安装jquery

  1. npm install jquery --save-dev

2.在build/webpack.base.conf文件当中引入jquery

  1. module.exports = {
  2. ...
  3. resolve: {
  4. extensions: ['.js', '.vue', '.json'],
  5. alias: {
  6. 'vue$': 'vue/dist/vue.esm.js',
  7. '@': resolve('src'),
  8. 'jquery': path.resolve(__dirname, '../node_modules/jquery/src/jquery')
  9. }
  10. },
  11. ...
  12. }

3.在项目根目录创建一个文件夹plugins,将zTree的js文件放进去

4.将zTree的样式文件放在static文件夹下(放在别的地方大饱之后会出现图片路径找不到等问题,放在static下打包时会避免ztree样式的压缩)。在main.js中引入该样式:

  1. import '../static/zTreeStyle/zTreeStyle.css'

5.创建公共组件ztree>index.vue,下面为我的公共组件

html:

  1. <template>
  2. <div class="ztree">
  3. <el-row>
  4. <el-col :span="12">
  5. <el-button icon="el-icon-plus" size="mini" type="text" @click="add">新增节点</el-button>
  6. </el-col>
  7. <el-col :span="12">
  8. <el-button icon="el-icon-delete" type="text" size="mini" @click="remove">删除节点</el-button>
  9. </el-col>
  10. </el-row>
  11. <ul id="treeDemo" class="ztree"></ul>
  12. </div>
  13. </template>

js:

  1. <script>
  2. import '../../../plugins/zTree/jquery-1.4.4.min'
  3. import '../../../plugins/zTree/jquery.ztree.core'
  4. import '../../../plugins/zTree/jquery.ztree.excheck'
  5. import '../../../plugins/zTree/jquery.ztree.exedit'
  6. export default {
  7. props: {
  8. zNodes: {
  9. type: Array
  10. },
  11. selectedNodeId: ""
  12. },
  13. data() {
  14. return {
  15. selectedNode: {},
  16. setting: {
  17. view: {
  18. showIcon: false
  19. },
  20. edit: {
  21. enable: true,
  22. showRemoveBtn: false,
  23. showRenameBtn: false
  24. },
  25. data: {
  26. keep: {
  27. parent: true,
  28. leaf: true
  29. },
  30. simpleData: {
  31. enable: true
  32. }
  33. },
  34. callback: {
  35. onClick: this.zTreeOnClick,
  36. onRename: this.zTreeOnRename
  37. }
  38. }
  39. };
  40. },
  41. methods: {
  42. // 初始化ztree
  43. init() {
  44. $.fn.zTree.init($("#treeDemo"), this.setting, this.zNodes);
  45. },
  46. // 树节点点击事件
  47. zTreeOnClick: function(event, treeId, treeNode) {
  48. this.selectedNode = treeNode;
  49. this.$emit("treeClick", treeNode);
  50. },
  51. // 树节点编辑名称回调
  52. zTreeOnRename(event, treeId, treeNode, isCancel) {
  53. this.$emit("addNode", treeNode);
  54. },
  55. // 点击添加按钮事件
  56. add() {
  57. let newCount = 1;
  58. let zTree = $.fn.zTree.getZTreeObj("treeDemo"),
  59. nodes = zTree.getSelectedNodes(),
  60. treeNode = nodes[0];
  61. if (treeNode) {
  62. if (treeNode.level === 2) {
  63. this.$message("分类不能超过三级");
  64. return;
  65. } else {
  66. treeNode = zTree.addNodes(treeNode, {
  67. id: 100 + newCount,
  68. isParent: true,
  69. pId: treeNode.id,
  70. name: "new node" + newCount++
  71. });
  72. }
  73. } else {
  74. treeNode = zTree.addNodes(null, {
  75. id: 100 + newCount,
  76. isParent: true,
  77. pId: 0,
  78. name: "new node" + newCount++
  79. });
  80. }
  81. zTree.editName(treeNode[0]);
  82. },
  83. // 点击删除按钮事件
  84. remove() {
  85. let zTree = $.fn.zTree.getZTreeObj("treeDemo"),
  86. nodes = zTree.getSelectedNodes(),
  87. treeNode = nodes[0];
  88. if (nodes.length == 0) {
  89. this.$message("请先选择一个节点");
  90. return;
  91. } else {
  92. this.$confirm("此操作将永久删除该节点, 是否继续?", "提示", {
  93. confirmButtonText: "确定",
  94. cancelButtonText: "取消",
  95. type: "warning"
  96. })
  97. .then(() => {
  98. this.$emit("removeNode", treeNode);
  99. })
  100. .catch(() => {});
  101. }
  102. }
  103. },
  104. watch: {
  105. // 监听树节点的变化更新树
  106. zNodes: function(val) {
  107. this.init();
  108. },
  109. },
  110. mounted() {
  111. this.init();
  112. }
  113. };
  114. </script>

希望本文所述对大家vue.js程序设计有所帮助。

人气教程排行