,在vue中引入joint.js。之前在网上查了很多,都没有给出肯定的答案。鼓捣了两天终于弄明白了,记录一下。首先,我参考了stackoverflow的一篇文章。点我点我。看完这篇文章,你至少应该大致做到了。我们具体看一下:首先在vue项目中运行npminstalljointjs--save然后在入口文件中,我的是main.js,也可以在app.js中加入如下两行,并使用joint.js和jquery作为全局变量window.$=require('jquery');window.joint=require('jointjs');这里要注意joint.js依赖backbone、jquery和lodash。通过脚本导入时,这些文件需要一个一个导入,而通过vue的npm则不需要。npm导入的joint.js已经默认打包了这些。这样介绍还不够。你可能会遇到地图可以正常加载,但是无法拖动的问题。这些问题一般是因为joint.js和自己vue项目中的环境冲突,导致读取失败或者读取错误。我在原来的项目中安装了element、iview、axios、vuex、jquery,安装joint.js后,jointjs无法正常加载。后来重新建了一个项目,只安装了element,axios,vuex,为了避免jquery和joint.js中的jquery冲突,后来jquery就没有安装了。这样可以吗?您可以运行上面链接中的示例吗?像这样:新的联合.dia.Graph;letpaper=newjoint.dia.Paper({el:$('#myholder'),width:600,height:200,model:graph,gridSize:1});让rect=newjoint.shapes.basic.Rect({position:{x:100,y:30},size:{width:100,height:30},attrs:{rect:{fill:'blue'},text:{text:'mybox',fill:'white'}}});让rect2=rect.clone();rect2.translate(300);letlink=newjoint.dia.Link({source:{id:rect.id},target:{id:rect2.id}});图形。添加单元格([重新ct,rect2,链接]);}}}}}}}}}}}}}}}}}NoNoNo,注意渲染是放在创建的生命周期中的。根据vue的生命周期,是找不到联合挂载div的el:$('#myholder'),也就是说运行的时候会报错。我的解决办法是点击div,从created中取出joint的内容,放到methods中。需要单击它才能显示它。不完美,有待改进(~ ̄▽ ̄)~也就是说代码会变成这样:
