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

vue自定義指令實(shí)現(xiàn)方法詳解

 更新時(shí)間:2019年02月11日 08:44:24   作者:cofecode  
這篇文章主要介紹了vue自定義指令實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了vue.js自定義指令相關(guān)定義、注冊、使用方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了vue自定義指令實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

vue中的指令就是v-on v-bind v-show等等,那么自定義指令是什么呢?

自己定義的指令就是自定義指令。

語法:

Vue.directive(id, definition)

這里可以參考vue中的指令

<h1 v-if="yes">Yes</h1> 其中,if就是指令I(lǐng)D,yes是expression

Vue.directive()傳入接受兩個(gè)參數(shù),id是指指令I(lǐng)D,definition是指定義對象。其中,定義對象可以提供一些鉤子函數(shù)。

鉤子函數(shù):

  • bind

- inserted:被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 (僅保證父節(jié)點(diǎn)存在,但不一定已被插入文檔中)。

  • update
  • componentUpdated

    unbind

鉤子函數(shù)參數(shù)

  • el:指令所綁定的元素,可以用來直接操作 DOM 。
  • binding:一個(gè)對象,包含以下屬性:

比如 name, value ,expression ,rawName等等

為了更好的操作DOM

例子如下,讓p標(biāo)簽的顏色變成紅色。給p標(biāo)簽加入了v-color 的自定義指令。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <p v-color="red">我是自定義指令</p> red綁定到data里面的變量
    <p v-color="'blue'">我是自定義指令</p> 也支持字符串
  </div>
<script src='vue.js'></script>
<script>
  // 注冊一個(gè)全局的自定義指令
  Vue.directive('color', {
   inserted: function (el,binding) {
    console.log(el,binding)
    el.style.color = binding.value
   }
  })
  new Vue({
    el:'#app',
    data:{
      red:'red'
    }
  })
</script>
</body>
</html>

局部注冊例子

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <p v-color="red">我是自定義指令</p>
  </div>
<script src='vue.js'></script>
<script>
  new Vue({
    el:'#app',
    data:{
      red:'red'
    },
    directives: {
     color: {
      // 指令的定義
      inserted: function (el,binding) {
       el.style.color = binding.value
      }
     }
    }
  })
</script>
</body>
</html>

比如給側(cè)邊欄做一個(gè)鼠標(biāo)滾輪事件。

但是,這樣需要兼容寫法,粗暴的給元素添加onmousewheel是不對的,因?yàn)樵诨鸷鼮g覽器下根本不會(huì)執(zhí)行。

怎么辦?

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    #scrollwrap {
      width:200px;
      height:800px;
      background: #ccc;
    }
  </style>
</head>
<body>
  <div id="app">
    <div id="scrollwrap" v-scrollfn="mousewheel">我是側(cè)邊欄</div>
  </div>
<script src='vue.js'></script>
<script>
  new Vue({
    el:'#app',
    data:{
      red:'red',
      mousewheel: '滾輪事件'
    },
    directives: {
     scrollfn: {
      // 指令的定義
      inserted: function (el,binding) {
       var userAgent = window.navigator.userAgent
       // 通過userAgent拿到
       if (userAgent.indexOf('Firefox')> -1) {
        console.log('是火狐瀏覽器')
        el.addEventListener('DOMMouseScroll',function (e){
         console.log(e.detail)
        })
       } else {
        console.log('不是火狐')
        el.addEventListener('mousewheel',function (e){
         console.log(e.wheelDelta)
        })
       }
      }
     }
    }
  })
</script>
</body>
</html>

希望本文所述對大家vue.js程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論

蒙阴县| 钦州市| 色达县| 清新县| 新绛县| 喜德县| 梓潼县| 黎城县| 蓬莱市| 华阴市| 堆龙德庆县| 金华市| 达孜县| 随州市| 英吉沙县| 綦江县| 富民县| 舞阳县| 南昌市| 北安市| 宁武县| 楚雄市| 莒南县| 策勒县| 古蔺县| 巴彦淖尔市| 津市市| 朝阳市| 新化县| 青铜峡市| 綦江县| 高碑店市| 宁河县| 林州市| 九寨沟县| 垦利县| 修文县| 玛纳斯县| 饶平县| 西峡县| 滨州市|