最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解在Vue中通過自定義指令獲取dom元素

 更新時(shí)間:2017年03月04日 13:27:07   作者:不帶汽的可樂  
本篇文章主要介紹了詳解在Vue中通過自定義指令獲取dom元素 ,具有一定的參考價(jià)值,有興趣的可以了解一下。

vue.js 是數(shù)據(jù)綁定的框架,大部分情況下我們都不需要直接操作 DOM Element,但在某些時(shí)候,我們還是有獲取DOM Element的需求的;

 在 vue.js 中,獲取某個(gè)DOM Element常用的方法是將這個(gè)元素改成一個(gè)組件 (component),然后通過 this.$el 去獲取,但是在一些很小的項(xiàng)目里,在一些沒有使用 webpack 等構(gòu)建工具的項(xiàng)目中,創(chuàng)建一個(gè)組件并不是那么值得,所以 vue 提供了另一種操作DOM元素的方式,就是自定義指令 (directive) ;

 自定義指令功能在DOM Element的生命周期內(nèi)提供了不同的鉤子函數(shù),并允許我們監(jiān)聽指令綁定的數(shù)據(jù)的變化,但是它也是有缺點(diǎn)的,就是在指令的鉤子函數(shù)內(nèi)無法通過 this 來訪問當(dāng)前 vue 實(shí)例,也就無法進(jìn)一步進(jìn)行復(fù)雜的操作(雖然一般不需要什么復(fù)雜的操作),在 vue 的鉤子函數(shù) (lifecycle hook) 和方法 (method) 中也無法像 this.$el 那樣輕易的訪問到自定義指令綁定的DOM元素;

 不過只要通過一點(diǎn)點(diǎn)變通的做法,就可以突破這個(gè)限制:

HTML代碼: 

    <div id="app">
      <span class='test' v-run="register('test1')"></span>
      <p class='test' v-run="register('test2')"></p>
    </div> 

JavaScript代碼:

const vm = new Vue({
  el:'#app',
  data : {
    elements : {}
  },
  directives : {
    run (el, binding) {
      if (typeof binding.value == 'function')
        binding.value(el);
    }
  },
  methods : {
    register (flag) {
      return (el)=>{
        this.elements[flag] = el;
      }
    }
  },
  beforeMount () {
    console.log(this.elements.test1); //=> undefined
  },
  mounted () {
    console.log(this.elements.test1); //=> the span DOM Element
    console.log(this.elements.test2); //=> the p DOM Element
  }
}) 

如代碼所示,建立一個(gè)名為 run 的自定義指令,運(yùn)行綁定的方法,并將當(dāng)前 DOM Element 作為參數(shù)傳入;
 同時(shí)建立一個(gè)名為 register 的方法,接收一個(gè) flag 參數(shù),并根據(jù)這個(gè)參數(shù)返回一個(gè)用于將傳入?yún)?shù)注冊到 this.elements 對象中的閉包函數(shù);

將寫好的 run 指令和 register 方法搭配使用,就可以把想要的 DOM 注冊進(jìn)this.elements,并在 hook 或者 method 中十分方便的訪問;

 注意:自定義指令將會(huì)在DOM元素插入 Document 時(shí),也就是組件 mount 時(shí)首次執(zhí)行,所以在此之前,比如 beforeMount 鉤子中是無法使用的,這點(diǎn)也和 this.$el 一致,詳情可以查看官方文檔中的生命周期圖示;

其實(shí)也很好理解啦……在 mount 之前,根本就沒有這個(gè)實(shí)際的 DOM 元素,怎么可能訪問的到……(:з)∠)

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

相關(guān)文章

  • 深入淺析Vue中的slots/scoped slots

    深入淺析Vue中的slots/scoped slots

    這篇文章主要介紹了Vue中的slots/scoped slots,本文實(shí)例代碼相結(jié)合的形式給大家介紹了slots的工作原理,需要的朋友可以參考下
    2018-04-04
  • Vue3中操作dom的四種方式保姆級教程(推薦!)

    Vue3中操作dom的四種方式保姆級教程(推薦!)

    某些情況下,我們?nèi)匀恍枰苯釉L問底層?DOM?元素,下面這篇文章主要給大家介紹了關(guān)于Vue3中操作dom的四種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Pure admin-Router標(biāo)簽頁配置與頁面持久化實(shí)現(xiàn)方法詳解

    Pure admin-Router標(biāo)簽頁配置與頁面持久化實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Pure admin-Router標(biāo)簽頁配置與頁面持久化實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • vue自定義標(biāo)簽和單頁面多路由的實(shí)現(xiàn)代碼

    vue自定義標(biāo)簽和單頁面多路由的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue自定義標(biāo)簽和單頁面多路由的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • vue動(dòng)態(tài)生成dom并且自動(dòng)綁定事件

    vue動(dòng)態(tài)生成dom并且自動(dòng)綁定事件

    本篇文章主要介紹了vue動(dòng)態(tài)生成dom并且自動(dòng)綁定事件,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • Vue中router-link如何添加mouseover提示

    Vue中router-link如何添加mouseover提示

    這篇文章主要介紹了Vue中router-link如何添加mouseover提示,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • element-plus的自動(dòng)導(dǎo)入和按需導(dǎo)入方式詳解

    element-plus的自動(dòng)導(dǎo)入和按需導(dǎo)入方式詳解

    之前使用 ElementPlus 做項(xiàng)目的時(shí)候,由于不會(huì)使用按需引入耽誤了不少時(shí)間,這篇文章主要給大家介紹了關(guān)于element-plus自動(dòng)導(dǎo)入和按需導(dǎo)入的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • vue3如何在setup中獲取DOM元素

    vue3如何在setup中獲取DOM元素

    這篇文章主要介紹了vue3如何在setup中獲取DOM元素問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3中項(xiàng)目優(yōu)化方法詳解(Web?Worker的使用)

    vue3中項(xiàng)目優(yōu)化方法詳解(Web?Worker的使用)

    最近在做vue3的項(xiàng)目中,遇到了計(jì)算量龐大導(dǎo)致頁面響應(yīng)緩慢的問題,所以下面這篇文章主要給大家介紹了關(guān)于vue3中項(xiàng)目優(yōu)化方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 如何使用electron將vue項(xiàng)目打包成.exe文件(保姆級教程)

    如何使用electron將vue項(xiàng)目打包成.exe文件(保姆級教程)

    本文給大家介紹如何使用electron將vue項(xiàng)目打包成.exe文件,大家要注意一下vue2項(xiàng)目,使用的vue-element-admin框架,用electron打包成.exe文件,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-03-03

最新評論

娱乐| 莆田市| 宾阳县| 密云县| 平邑县| 晋城| 农安县| 山阳县| 绵阳市| 镇赉县| 丰镇市| 剑河县| 温宿县| 化隆| 修水县| 龙里县| 宝应县| 清苑县| 霸州市| 湾仔区| 临沧市| 应用必备| 武鸣县| 涿州市| 都江堰市| 洞口县| 湘西| 定陶县| 驻马店市| 固始县| 奉节县| 平武县| 华宁县| 资源县| 开阳县| 兴山县| 浦县| 铁岭县| 霍邱县| 杭州市| 安图县|