欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Vue自定義指令的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹Vue自定義指令的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

阜寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

在 AngularJs 中,它的指令使用 directive ( name,factor_function)來實現(xiàn):

angular.module( 'myapp' ,[])
.directive (myDirective,function (){
    return{
      template : '',
      restrict: '',
      replace: '',
      ........
    }
})

除了內(nèi)置指令,Vue.js 也允許組件自定義指令。
+ 自定義指令提供一種機制將數(shù)據(jù)的變化映射為 DOM 行為
+ Vue.js 用 directive ( id,definition) 方法注冊一個全局的自定義指令
+ 自定義的指令接受兩個參數(shù): 指令 ID 與定義對象
+ 也可以用組件的 directives 注冊一個局部自定義指令 (此方法相當于 AngularJs restrict 屬性為A)

1. 鉤子函數(shù)

+ 鉤子函數(shù)是 Windows 消息處理機制的一部分
+ 通過設置“鉤子”,應用程序可以在系統(tǒng)級對所有消息、事件進行過濾,訪問在正常情況下無法訪問的消息。
+ 鉤子的本質(zhì)是一段用以處理系統(tǒng)消息的程序,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。
+ Windows 的鉤子函數(shù)可以認為是 Windows 的主要特性之一。利用它們,您可以捕捉您自己進程或其它進程發(fā)生的事件。
+ 通過“鉤掛”,您可以給 Windows 一個處理或過濾事件的回調(diào)函數(shù),該函數(shù)也叫做“鉤子函數(shù)”,當每次發(fā)生您感興趣的事件時,WINDOWS 都將調(diào)用該函數(shù)。

angularjs 提供了兩個函數(shù): compile 和 link ,其中編譯函數(shù)主要負責將作用域和 DOM 進行鏈接;鏈接函數(shù)用來創(chuàng)建可以操作 DOM 的指令

注意: compile 和 link 是互斥的,入如果同時設置這兩個選項,則會把 compile 返回函數(shù)當做 link 函數(shù),而忽略 link 選項本身
Vue.js 同樣也提供了幾個鉤子函數(shù)都是可選的,相互之間沒有制約關系

鉤子函數(shù):主要負責將作用域和 DOM 進行鏈接;鏈接函數(shù)用來創(chuàng)建可以操作 DOM 的指令

+ bind — 只調(diào)用一次,在指令第一次綁定到元素上的時候調(diào)用,用這個鉤子函數(shù)可以定義一個在綁定時執(zhí)行一次的初始化動作

inserted — 被綁定元素插入父節(jié)點時調(diào)用(父節(jié)點存在即可調(diào)用,不必存在于 document 中)

update — 在 bind 之后立即以初始值為參數(shù)第一次調(diào)用,之后每當被綁定元素所在的模板更新時調(diào)用,而不論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新,參數(shù)為新值與舊值。

componentUpdated — 被綁定元素所在模板完成一次更新周期時調(diào)用

unbind — 只調(diào)用一次,在指令從元素上解綁時調(diào)用

 Vue.directive('my-directive', {
   bind: function(){
    //做綁定的準備工作
    //比如添加事件監(jiān)聽器,或是其他只需要執(zhí)行一次的復雜操作
   },
   inserted: function(){
    //...
   },
   update: function(){
    //根據(jù)獲得的新值執(zhí)行對應的更新
    //對于初始值也會調(diào)用一次
   },
   componentUpdated: function(){
    //...
   },
   unbind: function(){
    //做清理操作
    //比如移除bind時綁定的事件監(jiān)聽器
   }
  })

在注冊之后,便可以在 Vue.js 模板中這樣寫(記得添加前綴 v-):

<div v-my-directive = 'someValue'></div>

當只需要 update 函數(shù)時,可以傳入函數(shù)替代定義對象:

Vue.directive( 'my-directive',function (value) {
  // 這個函數(shù)作用 update()
})

2. 指令實例屬性

所有鉤子函數(shù)都將被賦值到實際的指令對象中,在鉤子內(nèi) this 指向這個指令對象。
這個對象暴露了一些有用的屬性:
鉤子函數(shù)的參數(shù):

el— 指令綁定的元素,可以用來直接操作 DOM 。

binding— 一個對象,包含以下屬性:
name — 指令的名字,不包含前綴
value —指令的綁定值, 例如: v-my-directive=”1 + 1”,value 的值是 2。
oldValue — 指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
expression — 指令的表達式,不包括參數(shù)和過濾器,綁定值的字符串形式。 例如 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 }。
vm — 擁有該指令上下文 ViemModel
vnode — Vue 編譯生成的虛擬節(jié)點。

oldVnode:上一個虛擬節(jié)點,僅在 update 和 componentUpdated 鉤子中可用。

desciiptor— 一個對象,包含指令的解析結(jié)果

注意:我們應當將這些屬性視為只讀,不要修改它們,我們也可以給指令對象添加自定義屬性,但是注意不要覆蓋已有的內(nèi)部屬性

下面將講解一個簡單的例子,當頁面加載時,input輸入框?qū)⒆詣泳劢埂?br/>代碼如下:

//注冊一個全局自定義指令v-focus
// 當綁定元素插入到DOM中
// 聚焦元素
 <div id="app">
   <input v-focus>
 /div>

Vue.directive('focus', {
  inserted: function (el) {
    el.focus() }
  });

 var app = new Vue({
        el: '#app'
      });

下面將講解一個使用鉤子函數(shù)參數(shù)的例子,將元素的字體色設置為 #fff,將背景色設置為傳入指令的參數(shù) red,并將指令名指令綁定值,指令綁定值的表達式,傳入指令的參數(shù)顯示在中。

代碼如下:

 <div id="example" v-demo-directive:red="message"></div>

<script>
  Vue.directive('demoDirective', {
    bind: function(el, binding, vnode){
      el.style.color = '#fff'
      el.style.backgroundColor = binding.arg
      el.innerHTML = 
       '指令名 name:' + binding.name + '<br>' +
       '指令綁定值 value:' + binding.value + '<br>' +
       '指令綁定表達式expression:' + binding.expression + '<br>' +
       '傳入指令的參數(shù)argument - '  + binding.arg + '<br>'
      },
    });
    var demo = new Vue({
      el: '#example',
      data: {
        message: 'hello!'
      }
    })
    </script>

3. 對象字面量

+ 如果指令需要多個值,則可以傳入一個 javascript 對象字面量
+ 指令可以使用任意合法的 javascript 表達式

<div id="app" v-demo-directive="{ color: 'white', text: 'hello!' }"></div>

Vue.directive('demoDirective', function(el, binding, vnode){
    console.log(binding.value.color);
    console.log(binding.value.text);
  });

var demo = new Vue({
    el: '#app'
  })

4. 字面指令

+ 當指令使用了字面修飾符時,它的值將按普通字符串處理并傳遞給 update 方法
+ update 方法將只調(diào)用一次,因為普通字符串不能影響數(shù)據(jù)變化
+ 若在創(chuàng)建自定義指令時,設置 inListerral: true 則特性值將被視作字符串,并將賦值給該指令的expression,字面指令不會建立數(shù)據(jù)監(jiān)視。

div id="isExample" v-myEx.literal = 'foo bar baz'></div>

Vue.directive('myEx',function(el, binding, vnode){
  console.log(binding.value.literal)
})

var hah = new Vue({
  el: '#isExample'
})

以上是“Vue自定義指令的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文標題:Vue自定義指令的示例分析-創(chuàng)新互聯(lián)
分享鏈接:http://aaarwkj.com/article10/dohdgo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、外貿(mào)建站企業(yè)建站、營銷型網(wǎng)站建設、網(wǎng)站設計、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設
免费观看在线视频午夜| 国语自产精品视频在线不卡| 亚洲一二三区精品与老人| 国产精品乱码精品久久久| 久久免费看少妇高潮av| 中文字幕精品人妻在线| 我的农村中年激情熟妇| 日韩人妻一区二区三区蜜桃视频密| 成人av在线播放亚洲| 成年人免费在线观看毛片| 日韩欧美 高清一区| 91久久高清国语自产拍| 日韩三级视频一区二区| 免费观看在线视频午夜| 精品成人乱色一区二区| 欧美日韩精品视频专区| 国产免费很黄很色视频| 国产女主播高清在线视频| 成年人午夜看片免费网站| 插美女逼免费视频导航| 亚洲国内一区二区三区| 日本中文字幕免费专区| 中文字幕乱码av一区二区| 十八禁无遮挡污污污网站| 高清av网站大全网站| 极品白嫩少妇无套内谢| 日韩欧美国产精品加勒比| av成人资源一区久久| 国产日产精品一区二区三区四区| 中文字幕一区二区三天| 韩国三级在线视频网站| 亚洲视频欧美视频自拍偷拍| 亚洲综合一区二区三区四区在线 | 亚洲国产视频不卡一区| 青草成人在线视频观看| 99久久精品人妻一区| 国产一区二区日韩一区| 免费无码不卡av一区二区| 久久人妻制服乱码中文字幕| 日本一区二区三区伦理| 九九九热精品在线视频观看|