>웹 프론트엔드 >JS 튜토리얼 >vue에서 Jointjs 속성을 사용하는 방법

vue에서 Jointjs 속성을 사용하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-05-03 14:38:202045검색

이번에는 Vue에서 Jointjs 속성을 사용하는 방법을 보여드리겠습니다. Vue에서 Jointjs 속성을 사용할 때 주의사항은 무엇인가요?

join.js를 vue에 도입할 때의 문제 예전에 인터넷에서 많이 검색해봤는데 아무도 명확한 답변을 해주지 않아서 이틀간의 고민 끝에 드디어 알아내고 기록을 남겼습니다.
우선 stackoverflow Click me click me

이 글을 읽은 후에는 대략적으로라도 살펴보도록 하겠습니다.

vue에서 먼저 실행해 보세요. project npm installjoinjs --save

그런 다음 항목 파일에 다음 두 줄을 추가하세요. ​​내 것은 main.js이거나 app.js일 수도 있고, 전역 변수로 Joint.js 및 jquery를 사용하세요

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

여기서 주의할 점 네, Joint.js는 backbone, jquery, lodash에 의존하기 때문에 스크립트를 통해 소개할 때 이 파일들을 하나씩 import해야 하지만, vue의 npm을 사용할 때는 필요하지 않습니다. npm이 도입한 .js는 이미 기본적으로 이러한 파일을 캡슐화했습니다.

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

원본 프로젝트에 element, axios, vuex, jquery를 설치했는데,join.js를 설치한 후, 이후에 프로젝트를 다시 빌드하고 element, axios, vuex만 설치했습니다. 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 청사진 생성 코드

Vue에서 계산된 것과 메서드의 차이점

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

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