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

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

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

本文實例講述了vue自定義指令實現(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()傳入接受兩個參數(shù),id是指指令I(lǐng)D,definition是指定義對象。其中,定義對象可以提供一些鉤子函數(shù)。

鉤子函數(shù):

  • bind

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

  • update
  • componentUpdated

    unbind

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

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

比如 name, value ,expression ,rawName等等

為了更好的操作DOM

例子如下,讓p標簽的顏色變成紅色。給p標簽加入了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>
  // 注冊一個全局的自定義指令
  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è)邊欄做一個鼠標滾輪事件。

但是,這樣需要兼容寫法,粗暴的給元素添加onmousewheel是不對的,因為在火狐瀏覽器下根本不會執(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è)計有所幫助。

相關(guān)文章

最新評論

德令哈市| 澜沧| 和田市| 离岛区| 瑞安市| 嘉义市| 峨眉山市| 洛南县| 松滋市| 五寨县| 留坝县| 靖江市| 施甸县| 杭锦后旗| 天等县| 荃湾区| 博客| 尤溪县| 合川市| 梁平县| 南澳县| 独山县| 九寨沟县| 周至县| 裕民县| 甘肃省| 麟游县| 常德市| 张北县| 邳州市| 申扎县| 芒康县| 泗洪县| 铜梁县| 古田县| 镇康县| 江油市| 平阳县| 海宁市| 鄂州市| 云安县|