首頁  >  文章  >  web前端  >  在vue中如何開發自訂指令directive

在vue中如何開發自訂指令directive

亚连
亚连原創
2018-06-11 16:32:141959瀏覽

這篇文章主要介紹了vue自訂指令directive的相關資料,以下透過實例給大家介紹,需要的朋友可以參考下

下面給大家介紹vue自訂指令directive,具體內容如下所示:

 

#官網截圖實例

vue除了一些核心的內部定義的指令(v-model,v-if,v-for,v-show)外,vue也允許用戶註冊自己的一些功能性的指令,有時你實在是要對Dom操作,這個時候是自定義指令最適合的了。

來直接看例子:當頁面載入時使得元素獲得焦點(autofocus 在行動版Safari 是不支援的),就是當頁面載入好了,不做任何的動作使得表單自動取得焦點,遊標自動在某個表單上程式碼如下:

Vue.directive('zsqfocus', { // 注册一个全局自定义指令 `v-zsqfocus`,在main.js文件里
 inserted: function (el) { // 当被绑定的元素插入到 DOM 中时自动调用
 el.focus() // 聚焦元素
 }
})

如果想註冊局部指令,元件中也接受一個directives 的選項:

<script>
export default {
 directives: { // 指令的定义
  zsqfocus: {
   inserted: function (el) { // 获得焦点
    el.focus()
   }
  }
  }
 }
</script>

然後你可以在範本中任何元件上使用新的v-zsqfocus 屬性,如下:

<template>
 <input v-zsqfocus /> //调用 
</template>

舉了一個跟官網一樣的例子,directives跟methods,mounted等是一個級別的可以同時使用。

PS:下面看下vue之自訂指令directive的實例程式碼,具體程式碼如下所示:

<template>
 <p>
  <input v-model="dir1" v-my-directive1="dir1"/>     <input v-model="dir2" v-my-directive2="dir2"/>
 </p>
</template>
<script>
 export default {
  data(){
   return {         dir1:&#39;&#39;,         dir2:&#39;&#39;
       }
  },
  directives:{       //直接绑定函数,作用等同于update,不做准备工作和扫尾工作
   myDirective1(val){
    console.log(val)
   },       myDirective2:{          bind(){             //第一次绑定到元素的准备工作          },          update(val,old){            //在绑定到元素后立即以初始值第一次调用,然后每次example2变化都会调用update            console.log(val)          },            unbind(){            //销毁前的清理工作          }       }
  }
 }
</script>

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

在vue中如何實現用手指進行滑動的方法

在vue中如何編譯打包查看index文件

在vue中如何使用Jade模板

在Angular中傳遞模板

##########################################################################################################################################################################################################1在Node.js中使用Async和Await函數############解決webpack無法存取127.0.0.1的問題############在webpack-dev-server中實作遠端存取配置方法######

以上是在vue中如何開發自訂指令directive的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn