2016-06-22 1 views
0

Надеюсь, что некоторые API из интерфейса JQuery, например draggable(), я использовал. но это не сработает. Я нашел возможную причину в том, что в Vue-вызове есть нулевой объект для $ .ui. Хотели бы вы поделиться опытом для этого, пожалуйста?Vue не смог вызвать API JQuery UI

+0

Если вы используете webpack, вам может понадобиться использовать webpack.ProvidePlugin для jQuery. см. http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack – vbranden

+0

Не могли бы вы объяснить свою проблему более подробно? Вот jsfiddle, который применяет draggable() к компоненту vue js: https://jsfiddle.net/asemahle/dj8uujky/ – asemahle

ответ

0

Я использую JQuery UI и Vue js без проблем совместимости. Если вы хотите сделать компонент перетаскиваемым, вам нужно будет подключить любые обработчики после. Vue обновил DOM.

Элемент html компонента можно получить через его свойство $el. Из Vue js Lifecycle Diagram видно, что $el будет доступен во время крюка жизненного цикла ready.

Зная это, мы можем сделать компонент draggable() со следующим кодом:

Vue.component('draggable-widget', { 
    template: '#draggable-widget', 

    ready: function() { 
     $(this.$el).draggable(); 
    } 
}); 

Вот JSFiddle показывая его в действии.

+0

Я использую Vue.nextTick (function() {} ... он также работает, позвольте мне попробовать если вы идете, спасибо! Я думал, что ваш ответ будет правильным! – xinshouke

+0

Если вы делаете компонент перетаскиваемым из родительского экземпляра Vue или из родительского компонента, то, вероятно, нужна функция '$ nextTick'. работает, если компонент делает сам * перетаскиваемый. Рад, что вы получили его! – asemahle

Смежные вопросы