亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Vue中實現無限滾動加載指令

發布時間:2021-05-20 17:33:33 來源:億速云 閱讀:530 作者:Leah 欄目:web開發

這篇文章給大家介紹怎么在Vue中實現無限滾動加載指令,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、獲取滾動條位置

class Scroll {
  static get top() {
    return Math.max(document.documentElement.scrollTop || document.body.scrollTop);
  }
  static get clientHeight() {
    return Math.max(document.documentElement.clientHeight || document.body.clientHeight);
  }
  static get clientWidth() {
    return Math.max(document.documentElement.clientWidth || document.body.clientWidth);
  }
  static get height() {
    return Math.max(document.documentElement.scrollHeight || document.body.scrollHeight);
  }
  static get width() {
    return Math.max(document.documentElement.scrollWidth || document.body.scrollWidth);
  }
  static get bottom() {
    return Scroll.height - Scroll.clientHeight - Scroll.top;
  }
}

二、給根節點綁定滾動事件

vue給body元素綁定滾動條事件,真TMD草蛋。事件綁定上去了 媽的 就是不觸發事件。不知道什么鬼問題。

最后直接給根節點HTML綁定滾動事件。

const on = (function () {
  if (document.addEventListener) {
    return function (element, event, handler) {
      if (element && event && handler) {
        element.addEventListener(event, handler, false);
      }
    };
  } else {
    return function (element, event, handler) {
      if (element && event && handler) {
        element.attachEvent('on' + event, handler);
      }
    };
  }
})();

三、注冊全局指令

/**
 * 降低事件執行頻率
 */
const downsampler = (function () {
  let result = null;
  return function (time, func) {
    if (!result) {
      result = setTimeout(function () {
        func();
        result = null;
      }, time);
    }
  }
})();

Vue.directive("infinite-scroll", {
  bind(el, binding, vnode) {
    on(window, 'scroll', function () {
      if (typeof binding.value === "function" && Scroll.bottom <= 50) {  // 小于50就觸發
        downsampler(50, binding.value); // 降低觸發頻率
      }
    })
  }
});

四、實例:

<div class="app" v-infinite-scroll="coupon">
    <template v-for="item in goods">
      <p>{{item}}</p>
   </template>
</div>
    let v = new Vue({
      el: ".app",
      data(){
        return {
          goods:[]
        }
      },
      methods: {
        coupon() {
          this.goods.push("你呵呵")
        }
      }
    })

vue是什么

Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。

關于怎么在Vue中實現無限滾動加載指令就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

城步| 龙南县| 河津市| 岑溪市| 昭苏县| 南昌县| 文登市| 武川县| 湟源县| 剑河县| 林州市| 巴彦淖尔市| 苗栗县| 确山县| 隆德县| 北宁市| 洪江市| 台湾省| 杭州市| 类乌齐县| 安泽县| 辉县市| 武鸣县| 灵武市| 台中县| 广河县| 贞丰县| 汕尾市| 湘乡市| 内黄县| 乌拉特中旗| 长沙县| 光泽县| 汉沽区| 德格县| 句容市| 贵南县| 临泉县| 青铜峡市| 洛宁县| 曲周县|