javascript - Vue自定义指令directivs下定义的方法为何不执行
PHP中文网
PHP中文网 2017-04-11 11:38:12
[JavaScript讨论组]

在监听自定义指令时触发scroll事件,进行图片懒加载,但是在首次进入此页面路由时,图片不展示,怀疑是lazyLoad()方法未执行,当滚动滑轮是图片展示,问题来了,我调用了lazyLoad()但是此事件就是不执行, 求助大佬这问题如何解决,vue萌新,想大佬递茶。

首次加载

触发scroll事件

代码如下:

``html

``
``javascript
import axios from 'axios'
export default {

beforeCreate(){
  //准备创建Dom元素进行占为,展示Loading动画
  //this.$store.commit('updateLoadingMark',true);
},
data(){
  return {
    welfare: [],
  }
},
mounted(){
  //钩子  模板挂载对象已准备完毕Dom加载完成,等待数据填充
  let _self = this;
  axios.get('http://gank.io/api/random/data/福利/20')
  .then((response)=>{
    if(response.status == 200 && response.data.results){
      _self.welfare = response.data.results;
      //改变vuex 的loadingMark展示状态
      this.$store.commit('updateLoadingMark',false);
    }else{
      return console.log('axios请求已发送,返回数据失败');
    }
  })
  .catch((error)=>{
    return console.log(error);
  });
},
computed:{
},
directives:{
  //自定义指令
  scroll:{
    bind:((el,binding,vnode,oldVnode)=>{
      let _self = vnode.context;
      lazyLoad();
      window.addEventListener('scroll',lazyLoad);
      function lazyLoad(){
        let welfareClientHeight = document.documentElement.clientHeight;
        let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
        let childrens = vnode.elm.childNodes;
        let n = 0;
        // 延时展示
        for(let i = n; i= 0){
              childrens[i].firstChild.src = _selfImg;
            };
            n = i + 1;
          };
        };
      };
    }),
  }
},
methods:{
  //laztLoad 懒加载图片
  lazyload(){
    //123
  },
}

}
``

PHP中文网
PHP中文网

认证0级讲师

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号