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

vue.js內(nèi)部自定義指令與全局自定義指令的實(shí)現(xiàn)詳解(利用directive)

 更新時(shí)間:2017年07月11日 09:06:46   作者:前端交流ing  
這篇文章主要給大家介紹了關(guān)于vue.js內(nèi)部自定義指令與全局自定義指令的實(shí)現(xiàn)方法,vue.js中實(shí)現(xiàn)自定義指令的主要是利用directive,directive這個(gè)單詞是我們寫自定義指令的關(guān)鍵字,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

大家都知道在Vue中,我們平時(shí)數(shù)據(jù)驅(qū)動(dòng)視圖時(shí)候,內(nèi)部自帶的指令有時(shí)候解決不了一些需求,這時(shí)候,Vue給我們一個(gè)很好用的東東來實(shí)現(xiàn)自定義指令,這就是directive。下面話不多說了,來一起看看詳細(xì)的介紹:

directive

這個(gè)單詞是我們寫自定義指令的關(guān)鍵字哦

自定義指令為我們提供了幾個(gè)鉤子函數(shù),這時(shí)候你一定好奇什么是鉤子函數(shù),說簡單點(diǎn),就是集中表現(xiàn)狀態(tài)

  • bind: 只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用,用這個(gè)鉤子函數(shù)可以定義一個(gè)在綁定時(shí)執(zhí)行一次的初始化動(dòng)作。
  • inserted: 被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用(父節(jié)點(diǎn)存在即可調(diào)用,不必存在于 document 中)。
  • update: 被綁定元素所在的模板更新時(shí)調(diào)用,而不論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新(詳細(xì)的鉤子函數(shù)參數(shù)見下)。
  • componentUpdated: 被綁定元素所在模板完成一次更新周期時(shí)調(diào)用。
  • unbind: 只調(diào)用一次, 指令與元素解綁時(shí)調(diào)用。

下面我們開始上代碼,讓我們更好的理解自定義指令怎么做

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
 <div id="app">
 
 <div class="ab" v-css="{'color':'red','font-size':'30px'}">
 hello
 </div>
 <input type="text" v-focus>
 </div>
 
</body>
</html>

在html中,我們看到了兩個(gè)指令v-cssv-focus

我們自定義指令時(shí)候,一定前面要帶上v-

Vue.directive("css",{
 //鉤子函數(shù) ,el就是當(dāng)前元素
 inserted(el,binding){
 //el綁定的元素本身
 //binding就是css指令里面的的對(duì)象元素
 let styleobj=binding.value,arr=[];
 for(let key in styleobj){
  arr.push(key+":"+styleobj[key])
  }
 arr=arr.join(";");
 el.style.cssText=arr;
 },
 bind(el,binding) {
 //指令綁定在元素上時(shí)候執(zhí)行,只執(zhí)行一次
 }
});
 new Vue({
   el:'#app',
 data:{
  show:true
 },
 directives:{
 focus:{
  inserted(el,binding){
  //el綁定的元素本身
  //binding就是css指令里面的的對(duì)象元素
  el.focus();
  }
  }
 }
 });

在js里面我們可以看到

Vue.directive("css",{})

我們?cè)?new Vue外部定義了這樣一段代碼,這就是我們?nèi)肿远x指令的模板方式

  • css是自定義指令的名字
  • {}里面我們寫上鉤子函數(shù)就可以

我們所有的鉤子函數(shù)里面,基本都會(huì)有2個(gè)參數(shù)el,binding

  • el: 指令所綁定的元素,可以用來直接操作 DOM 。
  • binding 綁定元素本身的一個(gè)對(duì)象

從上面我們可以看到,binding里面保留綁定指令的name和value,這些很重要

局部自定義指令

directives:{
 name:{

 }
 }

區(qū)別在于,我們寫在new Vue里面,里面api操作和上面的全局自定義指令一樣

下面我們開始看代碼運(yùn)行結(jié)果

我們可以看到樣式引用上去了

文本框也獲取了焦點(diǎn)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • vue項(xiàng)目優(yōu)化之通過keep-alive數(shù)據(jù)緩存的方法

    vue項(xiàng)目優(yōu)化之通過keep-alive數(shù)據(jù)緩存的方法

    本篇文章主要介紹了vue項(xiàng)目優(yōu)化之通過keep-alive數(shù)據(jù)緩存的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • 深入理解Vuex的作用

    深入理解Vuex的作用

    這篇文章主要介紹了深入理解Vuex的作用,對(duì)Vuex感興趣的同學(xué),可以參考下
    2021-05-05
  • Vue數(shù)據(jù)監(jiān)聽方法watch的使用

    Vue數(shù)據(jù)監(jiān)聽方法watch的使用

    這篇文章主要介紹了Vue數(shù)據(jù)監(jiān)聽方法watch的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • vue自定義指令實(shí)現(xiàn)元素滑動(dòng)移動(dòng)端適配及邊界處理

    vue自定義指令實(shí)現(xiàn)元素滑動(dòng)移動(dòng)端適配及邊界處理

    這篇文章主要為大家介紹了vue自定義指令實(shí)現(xiàn)元素滑動(dòng)移動(dòng)端適配及邊界處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 基于Vue2實(shí)現(xiàn)印章徽章組件

    基于Vue2實(shí)現(xiàn)印章徽章組件

    這篇文章主要介紹了如何基于vue2實(shí)現(xiàn)簡單的印章徽章控件,文中通過示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的朋友們下面就跟隨小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Vue數(shù)據(jù)綁定簡析小結(jié)

    Vue數(shù)據(jù)綁定簡析小結(jié)

    這篇文章主要介紹了Vue數(shù)據(jù)綁定簡析小結(jié),本文將從源碼的角度來對(duì)Vue響應(yīng)式數(shù)據(jù)中的觀察者模式進(jìn)行簡析。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue?element-ui動(dòng)態(tài)橫向統(tǒng)計(jì)表格的實(shí)現(xiàn)

    vue?element-ui動(dòng)態(tài)橫向統(tǒng)計(jì)表格的實(shí)現(xiàn)

    這篇文章主要介紹了vue?element-ui動(dòng)態(tài)橫向統(tǒng)計(jì)表格的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue2.0使用swiper組件實(shí)現(xiàn)輪播的示例代碼

    vue2.0使用swiper組件實(shí)現(xiàn)輪播的示例代碼

    下面小編就為大家分享一篇vue2.0使用swiper組件實(shí)現(xiàn)輪播的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue組件間的樣式?jīng)_突污染問題詳解

    Vue組件間的樣式?jīng)_突污染問題詳解

    默認(rèn)情況下,寫在.vue組件中的樣式會(huì)全局生效,因此很容易造成多個(gè)組件之間的樣式?jīng)_突問題。導(dǎo)致組件之間樣式?jīng)_突的根本原因,我們接下來探究一下
    2022-11-11
  • 詳解如何在nuxt中添加proxyTable代理

    詳解如何在nuxt中添加proxyTable代理

    這篇文章主要介紹了詳解如何在nuxt中添加proxyTable代理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08

最新評(píng)論

六盘水市| 林周县| 马龙县| 西充县| 道孚县| 越西县| 武陟县| 大渡口区| 宜黄县| 扬州市| 象山县| 尉犁县| 共和县| 定兴县| 颍上县| 新营市| 屏山县| 平湖市| 牟定县| 贵定县| 兰考县| 本溪| 雷波县| 呼伦贝尔市| 塘沽区| 乐昌市| 郑州市| 余姚市| 沙坪坝区| 湘阴县| 虹口区| 静宁县| 肇庆市| 固镇县| 东兴市| 黄浦区| 从江县| 台南市| 肥东县| 崇文区| 夏邑县|