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