Можно ли добавить событие v-on:click с помощью jQuery и обработать его во vue?

343
17 февраля 2017, 03:59

Есть код html

<button id='qwerty'>qwerty</button>

Далее в javascript

$('#qwerty').attr('v-on:click', 'testMethod');

Как (и можно ли вообще) обработать событие testMethod во VueJS?

Это нужно для этого: Для построения дерева категорий использую эту библиотеку mbraak.github.io/jqTree и хочу при клике на категорию с помощью VueJS и VueResourse получать товары из выбранной категории. Но для этого нужна директива v-on:click

Answer 1

С такой задачей vue прекрасно справится и без jquery. Например, вот реализация древовидного меню из оф. документации. (Даже объекты с данными вроде как идентичны.)

По вашему вопросу, можно например воспользоваться trigger(), при клике на элемент, у которого нет v-on:click

$('#qwerty').on('click', function(evt) { 
  $('#new').trigger('click'); 
}); 
 
 
var app = new Vue({ 
  el: '#new', 
  methods: { 
    testMethod: function(e) { 
      console.log('Вызвали testMethod!'); 
    } 
  } 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js"></script> 
 
<button id="qwerty">Нет v-on:click</button> 
<button id="new" v-on:click="testMethod">Есть v-on:click</button>

READ ALSO
Асинхронная анимация jQuery

Асинхронная анимация jQuery

Как мне сделать animate и show асинхронными (Чтобы выполнялись одновременно) ? Пробовал делать так, но не работает

400
Нужно скрыть div с сгенерированным id

Нужно скрыть div с сгенерированным id

Нужно скрыть div с определнным id, полученным из localStorageЧто я делаю неправильно?

259
Маска телефона для поля input number

Маска телефона для поля input number

Есть всеми заезженый плагин ввода маски для текстового поляСтолкнулся с такой задачей, что нужно данную маску использовать для input type="number"...

318
&ldquo;Склеить&rdquo; данные в AJAX data

“Склеить” данные в AJAX data

Всем доброго времени суток! Появился следующий вопрос: Есть ajax-запрос:

284