VUE中使用 zTree -- jQuery 树插件 及 使用时报错 jQuery is not defined 的问题解决

时间:2024-11-18 09:37:02

使用需求

时隔两年多,再次使用到了 ztree ,这次是在vue中引入使用,并遇到了一些小问题,在这里把经验和解决办法给大家分享下,共勉。
ztree: zTree -- jQuery 树插件 官网简介 zTree v3.5 Demo 演示
有关ztree的使用,之前整理过两篇在jquery中使用的方法,大家参考下:
zTree -- jQuery 树插件 使用方法与例子
zTree -- jQuery 树插件 构造treeNode JSON 数据对象
zTree v3.5 Demo 演示 OutLook 样式的左侧菜单

在vue中使用zTree

首先,需要安装插件:

npm install ztree

然后,使用ztree

具体相关的代码如下:

<ul id="ztree" class="ztree"></ul>

提示:zTree 的容器 className 别忘了设置为 "ztree"!!!

  1. import 'jquery'
  2. import 'ztree'
  3. import 'ztree/css/metroStyle/'
  1. data () {
  2. return {
  3. treeNodes: '',
  4. selectNode: '',
  5. selectTreeSetting: {
  6. view: {
  7. showIcon: true,
  8. showLine: true,
  9. dblClickExpand: false
  10. },
  11. async: {
  12. enable: true,
  13. type: 'get',
  14. dataType: 'json',
  15. url: '/xxxx/',
  16. autoParam: ['id=parentId'],
  17. dataFilter:
  18. },
  19. data: {
  20. simpleData: {
  21. enable: true,
  22. idKey: 'id',
  23. pIdKey: 'parentId'
  24. }
  25. },
  26. callback: {
  27. onClick:
  28. }
  29. }
  30. }
  31. },
  32. mounted () {
  33. ($('#station'))
  34. },
  35. methods: {
  36. initStationSelectTree (anchor) {
  37. this.$get('/xxxxx/', {}, response => { //此处是使用的封装过的
  38. = $.(anchor, , response.data)
  39. })
  40. },
  41. filter (treeId, parentNode, childNodes) {
  42. if (!childNodes) return null
  43. for (var i = 0, l = childNodes.length; i < l; i++) {
  44. if (childNodes[i].parentId === 'super') childNodes[i].open = true
  45. }
  46. curChildNodes = childNodes
  47. return childNodes
  48. },
  49. zTreeOnClick: function (event, treeId, treeNode) {
  50. // (treeNode);点击树节点获取当前节点 等,编写需要的逻辑即可
  51. }
  52. }

效果如图:

图片描述

报错jQuery is not defined的解决

注意,在ztree中会使用到jQuery ,可能会报错jQuery is not defined,一开始参考vue ztree 结合使用中的办法:

项目build的时候自动加载jquery,并且输出到jQuery中

  1. new webpack.ProvidePlugin({
  2. jQuery:'jquery',
  3. $:'jquery',
  4. })

npm run dev 之前,先build一下,解决了报错 jQuery is not defined 的问题。

但是,重点来了,本地没问题,打包发布到正式环境依然报错jQuery is not defined,这就奇怪了,于是搜了很多解决报错jQuery is not defined的文章,各种方法试了很多,依然是报错,最后,其中一篇Webpack引入jquery及其插件的几种方法中的第四种方案,终于能成功解决了,本地运行和发布到正式环境都没再报错了。
这里贴一下解决方案:

  1. 此方法只依赖于自己,完全不需要任何其他插件与加载器,创建jquery的包装对象
  2. import $ from 'jquery'
  3. window.$ = $
  4. = $
  5. export default $
  6. 以后引用jquery时指向
  7. import $ from '../assets/'
  8. import 'jquery-ui'
  9. // 此时UI的方法全部可用,如果需要引用bootstrap,可参照此方法
  10. 为了调用方便,可在webpack配置文件中创建的别名
  11. alias: {
  12. jquery : 'src/assets/' // 将其指向所在位置
  13. }
  14. ---------------------
  15. 作者:蚁方阵
  16. 来源:****
  17. 原文:https:///yiifaa/article/details/51916560
  18. 版权声明:本文为博主原创文章,转载请附上博文链接!

相关参考

vue ztree 结合使用
Webpack引入jquery及其插件的几种方法
“jQuery/$ is not defined” 解决方法