国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

在vue中使用jointjs的方法

2019-11-19 14:06:48
字體:
來源:轉載
供稿:網友

在vue中引入joint.js的問題,之前在網上搜了很多,都沒有給出一個確切的答案,搗鼓了兩天終于弄明白了,做個記錄。
首先,我參考了一篇來自stackoverflow的文章點我點我

看完這篇文章,大家應該至少大致怎么做了,下面我們來具體看一下:

首先在vue項目中運行npm install jointjs --save

然后在入口文件,我的是main.js,也有可能是app.js中加入下面兩行,把joint.js和jquery作為全局變量

window.$ = require('jquery');window.joint = require('jointjs');

這里需要注意的是,joint.js依賴backbone、jquery和lodash,在通過script方式引入時,需要一一引入這些文件,但通過vue的npm時不需要,npm引入的joint.js已經默認封裝好了這些。

通過這樣引入還不夠,可能會遇到圖可以正常加載,但無法拖拽的問題,遇到這些問題一般是joint.js和自己vue項目中的環(huán)境沖突了,導致無法讀取或者讀取錯誤。

我原來的項目中安裝了element、iview、axios、vuex、jquery,再安裝joint.js后,jointjs無法正常加載,后來重新建了一個項目,只安裝了element、axios、vuex,為避免jquery和joint.js中的jquery沖突,后來沒有裝jquery。

這樣就行了么?就可以運行上文鏈接中的例子了么?像這樣:

<template>  <div>    <h1>Home</h1>    <div id="myholder"></div>  </div></template><script>  export default {    created() {      let graph = new joint.dia.Graph;      let paper = new joint.dia.Paper({        el: $('#myholder'),        width: 600,        height: 200,        model: graph,        gridSize: 1      });      let rect = new joint.shapes.basic.Rect({        position: { x: 100, y: 30 },        size: { width: 100, height: 30 },        attrs: { rect: { fill: 'blue' }, text: { text: 'my box', fill: 'white' } }      });      let rect2 = rect.clone();      rect2.translate(300);      let link = new joint.dia.Link({        source: { id: rect.id },        target: { id: rect2.id }      });      graph.addCells([rect, rect2, link]);    }  }</script>

NoNoNo,注意到這里是把渲染放在了created的生命周期里,根據vue的生命周期,是無法找到joint的掛載div的el: $('#myholder'),也就是說,運行會報錯,我的解決方法是把div放了一個click,把joint的內容從created中拿出,放在methods中,需要點擊一下才可顯示哦,還不太完美,以待改進(~ ̄

主站蜘蛛池模板: 呼图壁县| 弥勒县| 将乐县| 伊吾县| 南京市| 盐亭县| 衡阳县| 河北省| 郁南县| 武清区| 博白县| 汶川县| 德阳市| 林州市| 南雄市| 潮安县| 甘南县| 永城市| 平阳县| 沧源| 个旧市| 巨野县| 清原| 崇州市| 游戏| 崇仁县| 松溪县| 汽车| 阜新| 额敏县| 吴旗县| 墨江| 璧山县| 广灵县| 越西县| 长岛县| 喀什市| 锡林浩特市| 贡觉县| 荆州市| 新郑市|