美文网首页
| Vue 自定义指令

| Vue 自定义指令

作者: Hemingway_AT | 来源:发表于2019-11-01 00:16 被阅读0次

    介绍

    官网:https://cn.vuejs.org/v2/guide/custom-directive.html

    学习

    全局指令定义:

    image.png

    知识点

    • 5 个钩子函数,4 个钩子函数参数
    • 动态指令参数
    • 简写
    • 字面量

    练习

    <template>
      <div id="app">
        <ul>
          <li v-for="(item, index) in list" :key="index">{{item}}</li>
        </ul>
        <h2 v-scroll>onScroll</h2>
      </div>
    </template>
    
    <script>
    import Vue from 'vue';
    
    let list = [];
    let i = 100;
    while(i > 0){
      list.push(i);
      i--;
    }
    
    Vue.directive('scroll', {
      // 钩子函数
      inserted(el, binding, vnode){
        // 虚拟节点
        console.log(vnode);
        window.addEventListener('scroll', vnode.context.onScroll);
      }
    });
    
    export default {
      name: 'app',
      data () {
        return {
          list: list,
          num: 1000
        }
      },
      methods:{
        onScroll(){
          let scrollTop = document.documentElement.scrollTop || window.scrollY || window.pageYOffset ;
          let innerHeight = window.innerHeight;
          let scrollHeight = document.documentElement.scrollHeight;
    
          console.log(scrollTop, innerHeight, scrollHeight, scrollHeight - scrollTop - innerHeight);
          // 倒数1000距离范围内,每200距离打印一次距底距离
          if(scrollHeight - scrollTop - innerHeight == this.num){
            console.log(`见底距离:${scrollHeight - scrollTop - innerHeight}`);
            this.num -= 200;
            if(this.num == -200){
              this.num += 1200;
            }
          }
        }
      }
    }
    </script>
    
    <style>
    </style>
    
    • 效果
    演示.gif

    相关文章

      网友评论

          本文标题:| Vue 自定义指令

          本文链接:https://www.haomeiwen.com/subject/wgntbctx.html