欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue自定義指令封裝節(jié)流函數(shù)的方法示例

 更新時間:2018年07月09日 11:09:22   作者:勇PAN高峰  
本篇文章主要介紹了Vue自定義指令封裝節(jié)流函數(shù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

節(jié)流函數(shù)是web前端開發(fā)中經(jīng)常用到的一個開發(fā)技巧,在input實時搜索,滾動事件等,為了避免過多消耗性能,我們都會使用節(jié)流函數(shù).在《JavaScript高級程序設計》一書中有這樣的一個例子:

function throttle (method, context) {
  clearTimeout((method.tId))
  method.tId = setTimeout(function () {
   method.call(context)
  }, 100)
 }

 function resizeDiv () {
  var div = document.getElementById('myDiv')
  div.style.height = div.offsetWidth + 'px'
 }

 window.onresize = function () {
  throttle(resizeDiv)
 }

這個就是很典型的函數(shù)節(jié)流的應用,不多解釋,本文通過vue的自定義指令封裝類似的方法.

 <template>
 <div>
  <input
   type="text"
   v-model="text"
   v-debounce="search"
  >
 </div>
</template>
<script>
 export default {
  name: 'debounce',
  data () {
   return {
    msg: 'Welcome to Your Vue.js App',
    text: '',
    count: 1
   }
  },
  directives: {
   debounce: {
    inserted: function (el, binding) {
     let timer
     el.addEventListener('keyup', () => {
      if (timer) {
       clearTimeout(timer)
      }
      timer = setTimeout(() => {
       binding.value()
      }, 300)
     })
    }
   }
  },
  methods: {
   search () {
   // 實際要進行的操作 axios.get('')之類的
    this.count++
    console.log('count is:' + this.count)
   }
  }
 }
</script>

以上代碼實現(xiàn)了一個實時搜索類的函數(shù)節(jié)流,通過vue自定義指令v-debounce實現(xiàn).原本,如果我們想做一個實施搜索,那么會直接用@keyup=search,這樣就會非常耗性能,鍵盤敲一下,就會調(diào)用一次search事件,如果是ajax請求,那么會非常不友好,所以通過v-debounce,則可以在鍵盤連續(xù)敲擊的時候組織運行,停留300毫秒才執(zhí)行.

通過vue的自定義指令,還可以將其掛載在全局,那樣就能全局通過v-debounce調(diào)用了.這個比傳統(tǒng)方法簡單很多,不需要call,apply之類的.

關(guān)鍵點:vue 的自定義指令傳遞的參數(shù)binding 如果是一個函數(shù),則通過binding.value()來執(zhí)行,通過上述示例,還可以傳遞比如事件, 綁定對象之類的,上例綁定的是el, keyup事件,這些也可以通過binding傳遞,通過vue的自定義指令,可以簡化很多重復代碼,并且邏輯更加清晰

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue.js 的移動端組件庫mint-ui實現(xiàn)無限滾動加載更多的方法

    Vue.js 的移動端組件庫mint-ui實現(xiàn)無限滾動加載更多的方法

    下面小編就為大家分享一篇Vue.js 的移動端組件庫mint-ui實現(xiàn)無限滾動加載更多的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • vue-element-admin如何轉(zhuǎn)換成中文

    vue-element-admin如何轉(zhuǎn)換成中文

    這篇文章主要介紹了vue-element-admin如何轉(zhuǎn)換成中文問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 淺談vue項目利用Hbuilder打包成APP流程,以及遇到的坑

    淺談vue項目利用Hbuilder打包成APP流程,以及遇到的坑

    這篇文章主要介紹了淺談vue項目利用Hbuilder打包成APP流程,以及遇到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中el-table實現(xiàn)自動吸頂效果(支持fixed)

    vue中el-table實現(xiàn)自動吸頂效果(支持fixed)

    本文主要介紹了vue中el-table實現(xiàn)自動吸頂效果,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue項目添加多頁面配置的步驟詳解

    vue項目添加多頁面配置的步驟詳解

    公司使用 vue-cli 創(chuàng)建的 vue項目 在初始化時并沒有做多頁面配置,隨著需求的不斷增加,發(fā)現(xiàn)有必要使用多頁面配置。這篇文章主要介紹了vue項目添加多頁面配置,需要的朋友可以參考下
    2019-05-05
  • vue-virtual-scroll-list虛擬組件實現(xiàn)思路詳解

    vue-virtual-scroll-list虛擬組件實現(xiàn)思路詳解

    這篇文章主要給大家介紹了關(guān)于vue-virtual-scroll-list虛擬組件實現(xiàn)思路的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • Vue.js中兄弟組件之間互相傳值實例

    Vue.js中兄弟組件之間互相傳值實例

    本篇文章主要介紹了Vue.js中兄弟組件之間互相傳值實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue時間轉(zhuǎn)換的幾種方式

    vue時間轉(zhuǎn)換的幾種方式

    這篇文章主要介紹了vue時間轉(zhuǎn)換的幾種方式,需要的朋友可以參考下
    2022-05-05
  • vue實現(xiàn)修改圖片后實時更新

    vue實現(xiàn)修改圖片后實時更新

    今天小編就為大家分享一篇vue實現(xiàn)修改圖片后實時更新,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue中監(jiān)視屬性和計算屬性區(qū)別解析

    Vue中監(jiān)視屬性和計算屬性區(qū)別解析

    這篇文章主要介紹了Vue中監(jiān)視屬性和計算屬性區(qū)別,通過本文學習大家知道computed與watch配置項問題,computed能完成的功能,watch都可以完成,本文通過實例代碼給大家詳細講解,需要的朋友可以參考下
    2022-10-10

最新評論