vue 와 전통 jquery 플러그 인 충돌 을 어떻게 해결 합 니까?

이 글 은 vue 와 전통 적 인 jquery 플러그 인 충돌 을 어떻게 해결 하 는 지 를 소개 합 니 다.편집장 님 은 괜 찮 은 것 같 습 니 다.지금 공유 하고 참고 하 겠 습 니 다.같이 편집장 님 따라 오 세 요.
예 를 들 어 jquery 기반 select 2 플러그 인 은 vue 에서 단독으로 사용 하 는 데 많은 문제 가 있 습 니 다.사실은 이러한 플러그 인 에 대해 vue 의 사용자 정의 명령 과 구성 요소 로 포장 하여 충돌 문 제 를 해결 할 수 있 습 니 다.공식 vue 1.0 과 2.0 의 두 가지 예 를 인용 하여 배 워 보 세 요.
 예 1.0  예 2.0
큰 성 과 를 거두다.vue 1 을 바탕 으로 하 는 드 롭 다운 선택 에 대해 vue 공식 적 인 예 를 들 면 됩 니 다.다 중 선택 에 대해 서 는 아래 에 자신 이 쓴 것 을 보 세 요.핵심 은 명령 대상 의 el,vm 등 으로 select 2 가 변 경 된 select 드 롭 다운 목록 의 해당 대상 을 가 져 오 는 것 입 니 다.관건 은 jquery 로 원생 요 소 를 포장 한 후.val()로 다 중 선택 치 를 가 져 오 는 것 입 니 다.

<body>
  <div id="el">
   <p>Selected: {{selected}}</p>
   <select v-select3="selected" multiple class="app1" >
    <option value="0">default</option>
    <option v-for="o in options" :value="o.id">{{ o.text }}</option>
   </select>
    
    <p>Selected: {{market}}</p>
   <select v-select3="market" multiple class="app2" >
    <option value="0">default</option>
    <option v-for="o in markets" :value="o.id">{{ o.text }}</option>
   </select>
  </div>
  <script>
    Vue.directive('select3', {
     twoWay: true,
     priority: 1000,

     params: ['options'],
      
     bind: function () {
      var self = this;
      $(this.el)
       .select2()
       .on('change', function () {
        self.set($(self.el).val());
        console.log($(self.el).val());
        if ( self.expression == 'selected') {
          self.vm.market = [];
        }

       })
     },
     update: function (value) {
      
      $(this.el).val(value).trigger('change')
     },
     unbind: function () {
      $(this.el).off().select2('destroy')
     }
    })

    var vm = new Vue({
     el: '#el',
     data: {
      selected: 0,
      market: '',
      options: [
       { id: 1, text: 'hello' },
       { id: 2, text: 'what' }
      ],
      markets: [
        { id: 1, text: '     ' },
        { id: 2, text: '     ' }
      ]
     }
    });
    setTimeout(function () {
     vm.market = 0;
    }, 0);
  </script>
</body>
또한,기본 값 을 삽입 할 때 비동기 삽입 을 주의 하 십시오.vue 업데이트 페이지 는 비동기 이기 때문에 setTimeout(,0)을 만 들 었 습 니 다.
또한 한 페이지 에 서 는 SSpa 의 show 를 고려 할 때 상태 비트 vm.isInit 를 설정 합 니 다.기본 옵션 을 초기 화하 면 onchange 에서 관련 변경 사항 이 발생 했 는 지 판단 할 때 일부 값 의 비우 기 및 가 져 오지 않 음 을 표시 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기