和methods平級:
directives: { loadmore: {//自定義指令: 下拉加載 bind(el, binding) { var p = 0; var t = 0; var down = true; var selectWrap = el.querySelector('.selectPhaseBox .el-scrollbar__wrap'); selectWrap.addEventListener('scroll', function() { //判斷是否向下滾動 p = this.scrollTop; if(t < p){ down = true; }else{ down = false; } t = p; //判斷是否到底 const sign = 10; const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight; if (scrollDistance <= sign && down) { binding.value() } }); } } }
注意點:
1.通過querySelector來監測滾動框
2.使用v-loadmore="loadmore"來執行回調函數,其中loadmore可以自定義業務邏輯,其中v-loadmore指令要放到監測的組件父級上
3.局部自定義指令放在組件文件里面,全局自定義指令放在main.js里面用Vue.directives的方式。
總結:
1.在 Vue2.0 中,代碼復用和抽象的主要形式是組件。
2.3層:指令 ==》鈎子函數(某個時間點,bind,inserted,unbind) ==》鈎子的參數(el,binding)
參考鏈接:https://www.jianshu.com/p/4f0142d737a0
官方參考鏈接:https://cn.vuejs.org/v2/guide/custom-directive.html