Comment utiliser vue-scroll

J'ai un cas d'utilisation où je souhaite modifier la classe CSS de manière dynamique en fonction de la position de défilement, qui est décrit ici .

Je pensais utiliser la vue-scroll pour cela. J'ai fait les changements suivants:

Installation en utilisant npm:

npm install vue-scroll --save 

Effectué les modifications suivantes dans main.js :

 import Vue from 'vue' import vScroll from 'vue-scroll' Vue.use(vScroll) 

Ajouté dans l'un des composants, où je veux l'utiliser:

 <div v-scroll="onScroll"> ... ... <p>scrollTop:<span>{{position && position.scrollTop}}</span></p> ... ... </div> 

Et suite aux modifications apportées au composant:

 export default { data () { return { position: null } }, methods: { onScroll (e, position) { console.log('comes here ' + position) this.position = position } }, 

Cependant, cela ne fonctionne pas, j'ai également essayé de l'enregistrer comme une directive dans main.js , comme la suite, mais cela n'a pas non plus aidé.

 const app = new Vue({ router, store, el: '#app', template: '<App/>', components: { App }, // Object spread copying everything from App.vue directives: { 'v-scroll': vScroll // tried 'vScroll': vScroll as well } }) 

Ce qui peut être possible parce que cela ne fonctionne pas.

Ce lib ne semble pas être dans un état très stable, j'ai réussi à le faire fonctionner en utilisant la syntaxe @scroll='onScroll' ou v-on:scroll='onScroll . La position arg ne fonctionne pas dur, vous devez utiliser element.scrollTop .

Il semble que la documentation soit obsolète, probablement la syntaxe indiquée dans la documentation concerne la vue 1.x.

ÉDITÉ

En fait, j'étais complètement mal à propos de cela, v-on:scroll et @scroll sera traité par la vue elle-même, pas besoin de la libération vue-scroll. La vue-scroll lib ne fonctionne pas réellement dans l'exemple que j'ai lié.

Je suppose que vous pouvez utiliser le scroll intégré de vue en lieu et place de la libération vue-scroll

Vous pouvez voir un exemple de travail ici