詳解Vue.js組件可復(fù)用性的混合(mixin)方式和自定義指令
混合是什么
混合 (mixins) 是一種分發(fā) Vue 組件中可復(fù)用功能的非常靈活的方式?;旌蠈?duì)象可以包含任意組件選項(xiàng)。以組件使用混合對(duì)象時(shí),所有混合對(duì)象的選項(xiàng)將被混入該組件本身的選項(xiàng)。
例如:
var tpl1={ template:'#stpl1', data:function(){ return {msg:false} }, methods:{ msgf:function(){ this.msg=!this.msg } } } var tpl2={ template:'#stpl2', data:function(){ return {msg:false} }, methods:{ show:function(){ this.msg=true }, hide:function(){ this.msg=false } } } new Vue({ el:'#box', components:{ tpla:tpl1, tplb:tpl2, } })
我們會(huì)發(fā)現(xiàn),兩個(gè)組件中的數(shù)據(jù)大多數(shù)相同,這是我們可以將它們進(jìn)行混合
// 首先,定義一個(gè)混合對(duì)象 var mymixin = { data:function(){ return {msg:false} }, methods:{ show:function(){ this.msg=true }, hide:function(){ this.msg=false }, msgf:function(){ this.msg=!this.msg } } } var tpl1={ template:'#stpl1', minins:[mymixin] } var tpl2={ template:'#stpl2', minins:[mymixin] } // 如果我們需要在第一個(gè)組件定義data為true時(shí),我們可以直接在組件內(nèi)定義,他會(huì)覆蓋mixin的data var tpl1={ template:'#stpl1', minins:[mymixin], data:function(){ msg:true } }
自定義指令
除了默認(rèn)設(shè)置的核心指令( v-model 和 v-show ),Vue 也允許注冊(cè)自定義指令。注意,在 Vue2.0 里面,代碼復(fù)用的主要形式和抽象是組件——然而,有的情況下,你仍然需要對(duì)純 DOM 元素進(jìn)行底層操作,這時(shí)候就會(huì)用到自定義指令。
// 注冊(cè)一個(gè)全局自定義指令 v-focus Vue.directive('focus', { // 當(dāng)綁定元素插入到 DOM 中。 inserted: function (el) { // 聚焦元素 el.focus() } })
也可以注冊(cè)局部指令,組件中接受一個(gè) directives 的選項(xiàng):
directives: { focus: { // 指令的定義--- } }
然后你可以在模板中任何元素上使用新的 v-focus 屬性:
<input v-focus>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決前端上傳Formdata中的file為[object?Object]的問(wèn)題
文件上傳是Web開(kāi)發(fā)中常見(jiàn)的功能之一,下面這篇文章主要給大家介紹了關(guān)于如何解決前端上傳Formdata中的file為[object?Object]問(wèn)題的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07Vue Element-ui表單校驗(yàn)規(guī)則實(shí)現(xiàn)
Element-ui表單校驗(yàn)規(guī)則,使得錯(cuò)誤提示可以直接在form-item下面顯示,無(wú)需彈出框,感興趣的小伙伴們可以參考一下2021-07-07Vue項(xiàng)目中使用jquery的簡(jiǎn)單方法
這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中使用jquery的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05vue項(xiàng)目實(shí)現(xiàn)搜索內(nèi)容變紅色顯示
這篇文章主要為大家介紹了vue項(xiàng)目實(shí)現(xiàn)搜索內(nèi)容變紅色顯示,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Vue?websocket封裝實(shí)現(xiàn)方法詳解
項(xiàng)目中需要使用websocke,這個(gè)是我自己修修改改好多次之后用得最順手的一版,分享一下。這個(gè)封裝需要搭配vuex使用,因?yàn)槭盏降臄?shù)據(jù)都保存在vuex中了,真的絕絕子好用,解決了我一大堆問(wèn)題2022-09-09vue利用sync語(yǔ)法糖實(shí)現(xiàn)modal彈框的項(xiàng)目實(shí)踐
本文主要介紹了vue利用sync語(yǔ)法糖實(shí)現(xiàn)modal彈框的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Vue中Number方法將字符串轉(zhuǎn)換為數(shù)字的過(guò)程
這篇文章主要介紹了Vue中Number方法將字符串轉(zhuǎn)換為數(shù)字,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06vue 組件的封裝之基于axios的ajax請(qǐng)求方法
今天小編就為大家分享一篇vue 組件的封裝之基于axios的ajax請(qǐng)求方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08