2016-06-22 4 views
0

Ich hoffe, dass ich einige APIs von JQuery UI verwendet habe, wie zum Beispiel draggable(). aber es funktioniert nicht. Ich fand die mögliche Ursache ist, dass es Null-Objekt für $ .ui in Vue-Aufruf gibt. Möchtest du bitte einige Erfahrungen dafür teilen?Der Vue konnte die API von JQuery UI nicht aufrufen.

+0

Wenn Sie Webpack verwenden, müssen Sie möglicherweise das webpack.ProvidePlugin für jQuery verwenden. siehe http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack – vbranden

+0

Können Sie Ihr Problem genauer erklären? Hier ist eine jsfiddle, die ziehbare() auf eine vue js Komponente anwendet: https://jsfiddle.net/asemahle/dj8uujky/ – asemahle

Antwort

0

Ich habe Jquery UI und Vue js ohne Kompatibilitätsprobleme verwendet. Wenn Sie eine Komponente ziehbar machen möchten, müssen Sie alle Handler anhängen nach Vue hat das DOM aktualisiert.

Das HTML-Element einer Komponente kann über die Eigenschaft $el erreicht werden. Von der können wir sehen, dass $el während der Lebenszyklus-Hook ready verfügbar sein wird.

Mit diesem Wissen können wir eine Komponente draggable() mit dem folgenden Code ein:

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

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

ist hier ein JSFiddle es in Aktion zeigt.

+0

Ich benutze Vue.nextTick (function() {} ... es funktioniert auch, lass mich dein versuchen Übrigens, ich dachte, deine Antwort sei richtig! – xinshouke

+0

Wenn du die Komponente aus der übergeordneten Vue-Instanz ziehst oder aus einer Elternkomponente, dann ist wahrscheinlich die '$ nextTick'-Funktion notwendig Funktioniert, wenn die Komponente * selbst * ziehbar macht. Froh, dass es funktioniert hat! – asemahle