Vue 回顧之指令(關於input自動聚焦的問題)

2022-06-08 18:15:08 字數 1043 閱讀 4994

用了vue也一年多了,雖然對大部分內容都比較熟悉,但有些用法可能會起到意想不到的作用。

今天在做乙個關於**的需求,要求是每次點選編輯按鈕顯示編輯框,要求自動聚焦。

一開始想到了autofocus屬性,結果發現每次只有重新整理頁面的第一次會生效,之後無論怎麼點選都不能自動聚焦,於是網上查了很多資料,

最終問題指向了vue的指令,因此先回過頭看看vue的指令部分。

vue指令

除了核心功能缺省內置的指令 (v-modelv-show),vue 也允許註冊自定義指令。注意,在 vue2.0 中,**復用和抽象的主要形式是元件。然而,有的情況下,你仍然需要對普通 dom 元素進行底層操作,這時候就會用到自定義指令。舉個聚焦輸入框的例子,如下:

當頁面載入時,該元素將獲得焦點 (注意:autofocus在移動版 safari 上不工作)。事實上,只要你在開啟這個頁面後還沒點選過任何內容,這個輸入框就應當還是處於聚焦狀態。現在讓我們用指令來實現這個功能:

// 註冊乙個全域性自定義指令 `v-focus`

vue.directive('focus',

})

如果想註冊區域性指令,元件中也接受乙個directives的選項:

directives: }}

然後你可以在模板中任何元素上使用新的v-focus屬性,如下:

好了,問題看似得到了解決。但在具體的專案中,我們在inserted中拿到的el可能不是input節點(比如直接使用了第三方元件庫),這時就需要遍歷el的childnode屬性,獲得我們

想要的input元素引用,從而呼叫focus方法。

至此,問題圓滿解決。

Vue 通過自定義指令回顧 v 內建指令

vue.js 的各種指令 directives 更加方便我們去資料驅動 dom,例如 v bind v on v model v if v for v once 等內建指令,這些指令的職責就是當表示式改變時將某些行為應用到 dom 上,盡量不去操作增刪改 dom。通過了解如何去自定義指令,可以想象內...

vue之檔案指令

1.v bind 屬性名 變數 2.簡寫 屬性名 變數 3.class 變數 class class 類1變數,類n變數,這是乙個p段落 這是乙個p段落 這是乙個p段落 這是乙個p段落 這是乙個p段落 這是乙個p段落 這是乙個p段落 這是乙個p段落 指令 v on 事件名 方法變數 簡寫 事件名 方...

vue之常用指令

1 mustache 插槽指令即 比如 支援字串,表示式和方法等。2 v once 該指令使用後表示元素或者元件只渲染一次,不會隨資料改變而改變。比如 3 v html 該指令可以解析html 並渲染,該指令後面往往跟上乙個string型別資料,比如其中url是html標籤片段。4 v text 指...