自定義指令實現選項卡

2021-09-26 10:27:51 字數 1522 閱讀 1499

自定義指令主要是為了對底層dom實現操作,雖然說vue主要是以資料驅動檢視,但是總有一些只能操作dom的應用場景,例如最常見的:拖拽。此時,就是自定義指令大顯身手的時候了。

為了方便操作,以tab切換為例:

在router-view上左右滑動,切換路由:

我是利用vue animate css來為路由切換新增了乙個動畫的效果,這裡暫不關注。這裡需要關注的就是v-swipe-horizontal,「v-」是vue中約定的各種指令的寫法,所以其實真正的指令是swipe-horizontal,那麼怎麼定義swipe-horizontal呢?

全域性定義:

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

vue.directive('swipe-horizontal',

})

區域性定義:

swipehorizontal:),

currentrouteindex = routes.indexof(xc),

nextroute = null,

nextindex = null;

*/// 利用路有物件自定義的index屬性判斷

let routes = vnode.context.$router.options.routes,

currentroute = vnode.context.$route.path,

currentrouteindex = routes.find((item)=>).index,

nextroute = null,

nextindex = null;

var arr = routes.map((item)=>)

var max = math.max(...arr)

el.ontouchstart = (ev)=>

document.ontouchend = () => else if(disx - x > 20) */

nextroute = routes[nextindex]

if (x - disx > 20) else if(disx - x > 20)

if (nextindex != null) )

//在自定義的指令中,只有通過vnode.context才能獲取到vue物件

vnode.context.$router.replace(nextroute)

}}

我這裡提供了兩種確定路由的模式,主要是確定路由路徑的需要。

一種依賴路由陣列的順序,但是這種情況下,路由陣列的順序就必須與tab選項卡檢視展示的資料保持一致。

另外一種是為每乙個路由新增乙個index屬性,以確定當前tab選項卡展示的順序。

自定義指令中,主要邏輯是需要存在於自定義指令的鉤子函式中的,而鉤子函式又分為bind,inserted,update,componentupdated,unbind五種,我不知道有多少人能夠用到所有的鉤子函式,從我的角度來說,常用的鉤子函式bind或者inserted,兩者選擇其一就可以了。

02 09 選項卡 及自定義滾動條

定義滾動條寬高及背景,寬高分別對應橫豎滾動條的尺寸 scrollbar webkit scrollbar 定義滾動條的軌道,內陰影及圓角 scrollbar webkit scrollbar track 定義滑塊,內陰影及圓角 scrollbar webkit scrollbar thumb tab...

向C 的選項卡中新增自定義窗體

一.自定義窗體的搭建 這個比較簡單,新增乙個winform窗體就行了,設定乙個名字editpanel,然後在窗體上畫需要的控制項。二.將自定義窗體新增到選項卡 新建窗體加入到選項卡中 editpanel p1 new editpanel 這個就是自定義窗體 p1.formborderstyle fo...

向C 的選項卡中新增自定義窗體

一.自定義窗體的搭建 這個比較簡單,新增乙個winform窗體就行了,設定乙個名字editpanel,然後在窗體上畫需要的控制項。二.將自定義窗體新增到選項卡 新建窗體加入到選項卡中 editpanel p1 new editpanel 這個就是自定義窗體 p1.formborderstyle fo...