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

Vue.js自定義指令學(xué)習(xí)使用詳解

 更新時間:2019年10月19日 08:54:49   作者:吳聲子夜歌  
這篇文章主要為大家詳細介紹了Vue.js自定義指令的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

自定義指令

自定義指令的注冊方法和組件很像,也分全局注冊和局部注冊,比如注冊一個v-focus指令用于在<input>、<textarea>元素初始化時自動獲得焦點,共有兩種寫法:

//全局注冊
Vue.directive('focus',{
 //指令選項
});


//局部注冊
var app = new Vue({
 el: '#app',
 directive: {
 focus: {
 //指令選項
 }
 }
});

自定義指令的選項是由幾個鉤子函數(shù)組成的,每個都是可選的。

自定義指令的各個選項如下:

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

可以根據(jù)需求在不同的鉤子函數(shù)內(nèi)完成邏輯代碼,例如上面的v-focus,我們希望在元素插入父節(jié)點時就調(diào)用,那用到的最好是inserted。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 <title>自定義指令</title>
</head>
<body>
 <div id="app">
 <input type="text" v-focus>
 </div>
 <script>
 Vue.directive('focus',{
  inserted: function (el) {
  //聚焦元素
  el.focus();
  }
 });

 var app = new Vue({
  el: '#app'
 });
 </script>
</body>
</html>

每個鉤子函數(shù)都有幾個參數(shù)可用,具體如下:

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

    name:指令名,不包括v-前綴
    valule:指令的綁定值,例如v-my-directive=“1 + 1”,value的值是2
    oldValue:指令綁定的前一個值,僅在update和componentUpdated鉤子中可用。無論值是否改變都可用
    expression:綁定值的字符串形式。例如v-my-directive=“1 + 1”,expression的值是”1 + 1“
    arg:傳給指令的參數(shù)。例如v-my-directive:foo,arg的值是foo
    modifiers:一個包含修飾符的對象。例如v-my-directive.foo.bar,修飾符對象modifiers的值是{ foo:true, bar:true}

  • vnode: Vue編譯生成的虛擬節(jié)點。
  • oldVnode: 上一個虛擬節(jié)點僅在update和componentUpdated鉤子中可用。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 <title>自定義指令</title>
</head>
<body>
 <div id="app">
 <div v-test:msg.a.b="message"></div>
 </div>
 <script>
 Vue.directive('test',{
  bind: function (el, binding, vnode) {
  var keys = [];
  for(var i in vnode){
   keys.push(i);
  }
  el.innerHTML = 
   'name:' + binding.name + '<br/>' +
   'value:' + binding.value + '<br/>' +
   'expression:' + binding.expression + '<br/>' +
   'argument:' + binding.arg + '<br/>' + 
   'modifiers:' + JSON.stringify(binding.modifiers) + '<br/>' + 
   'vnode keys' + keys.join(',');
  }
 });

 var app = new Vue({
  el: '#app',
  data: {
  message: 'some text'
  }
 });
 </script>
</body>
</html>

更多教程點擊《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。

關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學(xué)習(xí)教程進行學(xué)習(xí)。

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

相關(guān)文章

  • Vue攔截器原理以及詳細使用方法

    Vue攔截器原理以及詳細使用方法

    這篇文章主要給大家介紹了關(guān)于Vue攔截器原理以及詳細使用的相關(guān)資料,Vue攔截器通常用于在發(fā)送請求或響應(yīng)數(shù)據(jù)時對其進行一些處理或修改,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • VUE數(shù)組根據(jù)索引刪除數(shù)據(jù),頁面同時更新的實現(xiàn)方法

    VUE數(shù)組根據(jù)索引刪除數(shù)據(jù),頁面同時更新的實現(xiàn)方法

    這篇文章主要介紹了VUE數(shù)組根據(jù)索引刪除數(shù)據(jù),頁面同時更新的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 在Vue項目中集成和使用Lottie動畫庫的步驟詳解

    在Vue項目中集成和使用Lottie動畫庫的步驟詳解

    Lottie 是一個由 Airbnb 開源的動畫庫,它允許你在 Web、iOS、Android 等平臺上使用體積小、高性能的體驗豐富的矢量動畫,本文將詳細介紹在 Vue 項目中如何集成和使用 Lottie,文中有詳細的代碼講解,需要的朋友可以參考下
    2023-11-11
  • vue如何實現(xiàn)文件上傳及預(yù)覽

    vue如何實現(xiàn)文件上傳及預(yù)覽

    這篇文章主要介紹了vue如何實現(xiàn)文件上傳及預(yù)覽問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue+uniapp瀑布流布局多種實現(xiàn)方式示例代碼

    vue+uniapp瀑布流布局多種實現(xiàn)方式示例代碼

    由于使用uniapp開發(fā)的微信小程序不需要考慮響應(yīng)式,因此瀑布流的實現(xiàn)相對于pc端更為簡單,下面這篇文章主要給大家介紹了關(guān)于vue+uniapp瀑布流布局多種實現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • vue動態(tài)子組件的兩種實現(xiàn)方式

    vue動態(tài)子組件的兩種實現(xiàn)方式

    這篇文章主要介紹了vue動態(tài)子組件的兩種實現(xiàn)方式,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • vue和react的區(qū)別及優(yōu)缺點解讀

    vue和react的區(qū)別及優(yōu)缺點解讀

    這篇文章主要介紹了vue和react的區(qū)別及優(yōu)缺點說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue項目打包發(fā)布到Nginx后無法訪問后端接口的解決辦法

    vue項目打包發(fā)布到Nginx后無法訪問后端接口的解決辦法

    這篇文章主要給大家介紹了關(guān)于vue項目打包發(fā)布到Nginx后無法訪問后端接口的解決辦法,記錄一下項目需要注意的地方,方便以后快速使用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • VueJs監(jiān)聽window.resize方法示例

    VueJs監(jiān)聽window.resize方法示例

    本篇文章主要介紹了VueJs監(jiān)聽window.resize方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue項目中main.js的用法

    vue項目中main.js的用法

    src/main.js是入口文件,主要作用是初始化vue實例并使用需要的插件, Vue.use()的作用就是讓它里面被注冊的組件能夠被全局使用,本文通過實例代碼介紹vue項目中main.js的用法,感興趣的朋友一起看看吧
    2023-10-10

最新評論

阿拉善右旗| 梅河口市| 桐柏县| 庄浪县| 镇沅| 道真| 景德镇市| 文水县| 闻喜县| 蒙城县| 元谋县| 合作市| 康保县| 建水县| 乡宁县| 民县| 固原市| 华亭县| 威远县| 敦煌市| 邓州市| 嘉善县| 民丰县| 阿坝县| 南陵县| 内黄县| 高密市| 富锦市| 锦屏县| 广州市| 皮山县| 杂多县| 永康市| 昔阳县| 女性| 尤溪县| 深水埗区| 新丰县| 瓮安县| 长宁区| 霍林郭勒市|