>  기사  >  웹 프론트엔드  >  Vue에서 Jointjs를 사용하는 방법에 대한 자세한 설명

Vue에서 Jointjs를 사용하는 방법에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-05-08 18:06:194086검색

이번에는 Vue에서 Jointjs를 사용하는 방법에 대해 자세히 알려드리겠습니다. Vue에서 Jointjs를 사용할 때 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

이 기사를 읽은 후에는 최소한 이를 수행하는 방법에 대한 대략적인 아이디어를 가져야 합니다. 자세히 살펴보겠습니다.

먼저 vue 프로젝트에 npm installjoinjs --save를 실행하세요

그런 다음 항목에서 file, ​​​내 것이 main .js이거나, app.js에 다음 두 줄을 추가하고,join.js 및 jquery를 전역 변수로 사용할 수도 있습니다

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

여기서join.js가 의존한다는 점에 유의해야 합니다. backbone, jquery 및 lodash 스크립트를 통해 도입할 때 이러한 파일을 하나씩 가져와야 하지만 vue의 npm을 통해 필요하지 않습니다.

이런 방식으로 도입하는 것만으로는 충분하지 않습니다. 이미지를 정상적으로 로드할 수 있지만 드래그 앤 드롭할 수 없는 문제가 발생할 수 있습니다. 이러한 문제가 발생하는 경우 일반적으로 Joint.js와 환경 간의 충돌로 인해 발생합니다. 자신의 vue 프로젝트에서 읽거나 읽을 수 없게 됩니다.

원래 프로젝트에 iview, axios, vuex, jquery를 설치했는데,join.js를 설치한 후 정상적으로 로드되지 않고 프로젝트를 다시 빌드하고 순서대로 설치했습니다. jquery를 피하기 위해 Joint.js에서 jquery와 충돌이 발생하여 나중에 jquery가 설치되지 않았습니다.

이거 괜찮아요? 위 링크의 예제를 실행할 수 있나요? 이렇게:

<template>
  <p>
    <h1>Home</h1>
    <p id="myholder"></p>
  </p>
</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, 렌더링이 생성된 lifecycle에 배치된다는 점에 유의하세요. vue의 라이프사이클에 따르면 조인트 마운팅 p의 el을 찾을 수 없습니다. $('#myholder'), In other 즉, 실행 시 오류가 보고됩니다. 내 해결 방법은 p를 클릭하고 생성된 조인트의 내용을 가져와서 표시하려면 클릭해야 한다는 것입니다. 아직은 기다려보겠습니다. 개선(~ ̄▽ ̄)~

즉, 코드는 다음과 같습니다.

<template>
  <p>
    <p id="myholder" @click="click_joint"></p>
  </p>
</template>
<script>
  export default {
   methods:{
     click_joint() {
      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>

참고로 npm을 통해 도입할 경우에는jointjs만 설치하면 됩니다. lodash, backbone, jquery를 설치하거나 페이지에join.css 파일을 가져올 필요가 없습니다. 저자는 이전에 스크립트를 통해 조인트.js를 여러 번 시도했는데 성공하지 못했습니다. 다른 친구들이 성공적으로 시도하면 자유롭게 공유해 주세요.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

Angular CLI를 사용한 유닛 및 E2E 테스트 단계에 대한 자세한 설명

계산 및 메서드 사용에 대한 자세한 설명

위 내용은 Vue에서 Jointjs를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.