詳解使用vue實現tab 切換操作

2022-03-06 14:09:14 字數 2390 閱讀 1035

**  

這篇文章主要介紹了詳解使用vue實現tab操作,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在使用jquery類庫實現tab功能時,是獲取滑鼠在mousenter或click時的index值,然後切換到當前的標題和內容,把其他的標題和內容的狀態去掉:

$('.tab .title').find('.item')

.removeclass('current').eq(index).addclass('current'); // 為index位置的title新增current

$('.tab .content').find('.item')

.hide().eq(index).show(); // 顯示index位置的內容

那麼在使用vue實現tab功能時,就不是像jquery這種直接操作dom了。我這裡總結了下實現tab功能的3個思路,僅供參考。

1. 切換content或者直接切換內容

這種思路下,我們首先把結構搭建起來,然後用乙個變數selected表示tab當前展示的位置,給li標籤新增mouseenter或click事件,將當前的index傳遞進去:

html**:

js**:

data: ,,}

` }

] },

methods:

}})繫結的change(index)事件,每次都將index給了selected,然後tab就會切換到對應的標籤。

上面的**裡,我們是通過切換div的顯示與隱藏來進行執行的。tab中的content裡如果只有純html內容,我們可以直接把list[selected].content展示到.bd中:

每次selected變換時,bd的內容都會發生變化。

2. 使用currentview

在上面的實現方式中,第3個tab裡有個輸入框與p標籤雙向繫結,但是沒有效果,因為vue是把list中的內容作為html元素填充到頁面中的,message並沒有作為vue的屬性繫結給input。那麼使用組建和currentview就能彌補這個缺陷。

無論使用全域性註冊還是區域性註冊的元件,思路都是一樣的,我們暫時使用全域性註冊的元件來實現。

每個元件裡展示的是乙個tab裡的內容,先註冊3個元件:

// tab0

vue.component('item0',);

// tab1

vue.component('item1',)

// tab2

vue.component('item2',

}, template : `hello world}`

})

然後在html中使用component來展示對應元件的內容,title的展示方式不變:

currentview屬性可以讓多個元件可以使用同乙個掛載點,並動態切換:

data: ,,]

}, methods:

}})這樣 message 在元件裡就是乙個獨立的data屬性,能在tab裡也使用vue繫結事件了.

3. 使用slot方式等

使用slot方式進行內容分發或者乙個獨立的元件,可以讓我們把**整合到一塊,對外提供乙個資料介面,只要按照既定的格式填寫資料即可。

3.1 slot

用slot方式寫乙個子元件:

vue.component('my-slot-tab', );

父元件模板:

}

父元件中slot="title"會替換子元件中name="title"的slot,父元件中slot="content"會替換子元件中name="content"的slot.最終渲染出來的tab結構與上面之前的**一樣。

3.2 其他元件方式

還有一種方式就是把所有的模板都寫到元件中。

子元件:

vue.component('my-tab', 

}, methods :

}});

父元件:

這種只需要傳遞乙個list即可。

對比這兩種方法,slot中可以自定義更多的內容,而下面的方法使用起來更加簡單,只是自定義的東西比較少。

4. 總結

Vue 實現tab切換

v bind 三元 v for item,index in tabs class click tab index 先使用v for把資料遍歷渲染到頁面上,v for中有乙個index表示索引,將index作為引數傳入到tab index 這個函式中,在data中定義乙個num變數,在title中如果...

Vue實現tab標題切換例項

方法 一 html部分布局 html部分 如下所示 標題二標題三 標題四 內容一 內容二內容三 內容四給選中部分加css樣式 css部分 如下所示 li.hx activity引入vue.js實現效果 js部分 如下所示 new vue 方法 二 menulist for item,index in...

使用angularJs實現tab切換

最近的專案客戶要求使用angularjs,不得不說angularjs用起來確實方便。但是有些功能事件不會的話還是會用jq。其實在使用angularjs的時候,能不用jq最後還是不用jq,以免混亂 衝突。閒話少敘,專案中有tab切換的需要,這很常見。若是不引用angularjs 的話,一般是自己用jq...