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

前端框架Vue.js中Directive知識(shí)詳解

 更新時(shí)間:2016年09月12日 14:59:48   作者:lihongxun945  
這篇文章主要為大家詳細(xì)介紹了前端框架Vue.js中Directive知識(shí),感興趣的小伙伴們可以參考一下

Directive

看上去雖然和Angular中的定義類似,Directive 都是對DOM功能的一種拓展,但是 Vue 的 Directive 要弱的多。因?yàn)?Vue Component 其實(shí)本來就會(huì)包含對DOM的操作,所以大多數(shù)時(shí)候我們寫一個(gè)通用組件都是一個(gè)Component 而不是一個(gè) Directive,而 在 Angular 我們寫一個(gè)通用的組件一般都是一個(gè) Directive 。
所以我說 Vue 的 Directive 相比于 Angular 要弱的多,也可以說純粹的多,他就是對 DOM 功能的一個(gè)拓展,而不是為了封裝和DOM相關(guān)的邏輯。有興趣可以通過對比這兩個(gè)UI庫就能明白:
 •Vux https://github.com/airyland/vux
 •Angular Bootstrap https://github.com/angular-ui/bootstrap 

對比就會(huì)發(fā)現(xiàn),其實(shí)在 Vue 中我們封裝一個(gè)通用的組件(其實(shí)不管是不是通用)都是一個(gè) Component,但是在 Angular 中卻是一個(gè) Directive,因?yàn)?Angular 中的 Controller 其實(shí)只能創(chuàng)建一個(gè) $scope 作用域??梢院唵蔚恼J(rèn)為在 Vue Directive = Angular Directive + Controller。前面講到過 Vue 很多設(shè)計(jì)都和Angular2類似,Vue 中的 Directive 基本可以等價(jià)于 Angular2 的 Directive,但是千萬不要和 Angular 中的 Directive 搞混了。

為了避免誤導(dǎo),所以后面不再拿 Angular Directive 作對比了。

生命周期

生命周期分為三步:
 •bind 第一次綁定到DOM元素上的時(shí)候觸發(fā)
 •update bind完成之后立刻觸發(fā),以后每當(dāng)參數(shù)更新的時(shí)候都會(huì)觸發(fā)
 •unbind 解除和DOM元素的綁定時(shí)觸發(fā) 

API 簡潔到哭。。。
其中 update 是最重要的,也就是當(dāng) Directive 接收到一個(gè)值的更新的時(shí)候就會(huì)執(zhí)行對應(yīng)的代碼。update函數(shù)接收的參數(shù)就是用戶通過 Attr 傳入的值。

我們下面實(shí)現(xiàn)一個(gè)簡單的 Directive,它的作用是對 Todo List 輸入的內(nèi)容進(jìn)行校驗(yàn)(表單校驗(yàn))。Directive 基本結(jié)構(gòu)如下:

Vue.directive("minlength", {
 bind: function() {
 },
 update: function(value) {
 },
 unbind: function() {
 }
});

 然后,我們需要在用戶輸入的時(shí)候進(jìn)行校驗(yàn),這里實(shí)現(xiàn)一個(gè)簡單的 minlength 校驗(yàn),代碼如下:

Vue.directive("minlength", {
 bind: function() {
 var self = this;
 var el = this.el;
 el.addEventListener("keydown", function(e) {
  if(e.keyCode === 13) {
  if(el.value.length < self.minlength) {
   e.preventDefault();
  }
  }
 });
 var submit = el.parentNode.querySelector("button, [type='submit']");
 submit.disabled = true;
 el.addEventListener("keyup", function(e) {
  submit.disabled = (el.value.length < self.minlength);
 });

 },
 update: function(value) {
 this.minlength = parseInt(value);
 },
 unbind: function() {
 }
});

基本邏輯就在在 bind 階段的時(shí)候就綁定事件,然后根據(jù) update 時(shí)候傳入的 minlength 值來進(jìn)行判斷。

目前看,Directive 應(yīng)該就是為了實(shí)現(xiàn)類似的功能存在的,當(dāng)然還有很多細(xì)枝末節(jié)的用法就不再細(xì)講了。Directive 在 Vue 中并不是很重要的一塊,大家平時(shí)寫代碼的時(shí)候更多還是寫 Component。

Filter 和 Mixins 看起來比較簡單,略過。

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

相關(guān)文章

  • 詳解Vue computed計(jì)算屬性是什么

    詳解Vue computed計(jì)算屬性是什么

    在vue中,有時(shí)候你需要對data中的數(shù)據(jù)進(jìn)行處理,或者對抓取的數(shù)據(jù)進(jìn)行處理之后再掛載呈現(xiàn)到標(biāo)簽中,這時(shí)候你就需要計(jì)算屬性了,當(dāng)然看到這里你可能還是不了解那下面我舉幾個(gè)實(shí)例并附代碼解釋
    2023-03-03
  • vue3中使用swiper的完整版教程(超詳細(xì)!)

    vue3中使用swiper的完整版教程(超詳細(xì)!)

    工作中日常筆記,vue中使用swiper插件,在pc端和h5端也是常用的插件,下面這篇文章主要給大家介紹了關(guān)于vue3中使用swiper的完整版教程,需要的朋友可以參考下
    2023-04-04
  • 一篇文章帶你了解vue路由

    一篇文章帶你了解vue路由

    這篇文章主要為大家詳細(xì)介紹了vue的路由,路由的本質(zhì)就是一種對應(yīng)關(guān)系,比如說我們在url地址中輸入我們要訪問的url地址之后,瀏覽器要去請求這個(gè)url地址對應(yīng)的資源,本文具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • vue使用代理解決請求跨域問題詳解

    vue使用代理解決請求跨域問題詳解

    這篇文章主要為大家詳細(xì)介紹了vue使用代理解決請求跨域問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • vue開發(fā)移動(dòng)端底部導(dǎo)航條功能

    vue開發(fā)移動(dòng)端底部導(dǎo)航條功能

    這篇文章主要介紹了vue開發(fā)移動(dòng)端底部導(dǎo)航條功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • vue多種彈框的彈出形式的示例代碼

    vue多種彈框的彈出形式的示例代碼

    本篇文章主要介紹了vue多種彈框的彈出形式的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model的詳細(xì)過程

    Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model的詳細(xì)

    v-model 是 vue3 中的一個(gè)內(nèi)置指令,很多表單元素都可以使用這個(gè)屬性,如 input、checkbox 等,咱可以在自定義組件中實(shí)現(xiàn) v-model,這篇文章主要介紹了Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model,需要的朋友可以參考下
    2022-10-10
  • Element-ui中的Cascader級(jí)聯(lián)選擇器基礎(chǔ)用法

    Element-ui中的Cascader級(jí)聯(lián)選擇器基礎(chǔ)用法

    這篇文章主要為大家介紹了Element-ui中的Cascader級(jí)聯(lián)選擇器基礎(chǔ)用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Vue 3中的defineEmits()和defineProps()使用小結(jié)

    Vue 3中的defineEmits()和defineProps()使用小結(jié)

    defineProps()和defineEmits()是Vue 3中Composition API的重要組成部分,它們分別用于定義組件接收的屬性和觸發(fā)的事件,本文給大家介紹Vue 3中的defineEmits()和defineProps()解析,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開瀏覽器的方法

    讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開瀏覽器的方法

    今天小編就為大家分享一篇讓webpack+vue-cil項(xiàng)目不再自動(dòng)打開瀏覽器的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評(píng)論

翼城县| 鹿泉市| 漠河县| 于都县| 长沙县| 吉林省| 兴文县| 米泉市| 雅江县| 霍林郭勒市| 云林县| 延边| 瓦房店市| 山东省| 肥乡县| 正定县| 汪清县| 梧州市| 朝阳市| 二连浩特市| 和平区| 常山县| 连山| 开阳县| 惠州市| 晴隆县| 奉新县| 章丘市| 张北县| 马关县| 五寨县| 庆云县| 浮梁县| 疏附县| 进贤县| 广灵县| 扶沟县| 清河县| 宜阳县| 彭阳县| 武宣县|