欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton

 更新時(shí)間:2016年09月05日 09:53:37   作者:i10630226  
這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton的具體代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

vue實(shí)現(xiàn)一個(gè)分頁(yè)組件vue-paginaiton

vue使用了一段時(shí)間的感觸就是,我再也不想直接操作DOM了。數(shù)據(jù)綁定式的編程體驗(yàn)真是好。實(shí)現(xiàn)的一個(gè)分頁(yè)組件。

這里的css就不放出來(lái)了,可以看直接去github上下載:vue-pagination

先上一張實(shí)例圖吧

模版

<div class="page-bar">
 <ul>
 <li v-if="showFirstText"><a v-on:click="cur--">上一頁(yè)</a></li>

 <li v-for = "index in pagenums">
 <a v-on:click="pageChange(index)">{{index}}</a>

 </li>

 <li v-if="showNextText"><a v-on:click="cur++">下一頁(yè)</a></li>
 <li><a>共<i>{{all}}</i>頁(yè)</a></li>
 </ul>

</div>

在未引入js前,頁(yè)面的顯示,分析下,all字段簡(jiǎn)單直接輸出即可,{{index}}是分頁(yè)碼這個(gè)需要一些動(dòng)態(tài)的渲染。

var app = new Vue({
 el: '#app',
 data:{
 currentpage: 1,
 totlepage: 28,
 visiblepage:10,
 msg: ''
 },
})

調(diào)用 new Vue({參數(shù)}) 就是創(chuàng)建了一個(gè)基本的組件,賦值給變量 app.el就是element的縮寫(xiě),定位模版的位置.data就是數(shù)據(jù)了.知道了總頁(yè)數(shù)但是要顯示頁(yè)碼還是要一番計(jì)算,所以顯示頁(yè)碼就是計(jì)算屬性了.所以我們要用computed

computed: {
 //計(jì)算屬性:返回頁(yè)碼數(shù)組,這里會(huì)自動(dòng)進(jìn)行臟檢查,不用$watch();
 pagenums: function(){
 //初始化前后頁(yè)邊界
 var lowPage = 1;
 var highPage = this.totlepage;
 var pageArr = [];
 if(this.totlepage > this.visiblepage){//總頁(yè)數(shù)超過(guò)可見(jiàn)頁(yè)數(shù)時(shí),進(jìn)一步處理;
 var subVisiblePage = Math.ceil(this.visiblepage/2);
 if(this.currentpage > subVisiblePage && this.currentpage < this.totlepage - subVisiblePage +1){//處理正常的分頁(yè)
 lowPage = this.currentpage - subVisiblePage;
 highPage = this.currentpage + subVisiblePage -1;
 }else if(this.currentpage <= subVisiblePage){//處理前幾頁(yè)的邏輯
 lowPage = 1;
 highPage = this.visiblepage;
 }else{//處理后幾頁(yè)的邏輯
 lowPage = this.totlepage - this.visiblepage + 1;
 highPage = this.totlepage; 
 }
 }
 //確定了上下page邊界后,要準(zhǔn)備壓入數(shù)組中了
 while(lowPage <= highPage){
 pageArr.push(lowPage);
 lowPage ++;
 }

 return pageArr;
 }
 },

觀看html模版發(fā)現(xiàn)v-if指令.很明顯當(dāng)內(nèi)容是true就輸出,否就沒(méi)。

重點(diǎn)看下

<li v-for="index in pagenums" v-bind:class="{ active: currentpage == index}">
 <a v-on:click="pageChange(index)">{{ index }}</a>
 </li>

v-for是循環(huán)渲染輸出計(jì)算屬性pagenums.每一次循環(huán)的子元素賦值給index v-bind:class綁定class,當(dāng)渲染到目前的角標(biāo)的時(shí)候加個(gè)class v-on:click是綁定了事件,我把index當(dāng)參數(shù)傳進(jìn)入了,后面做判斷,默認(rèn)傳event事件.
然后我們Vue的選項(xiàng)里面再增加methods字段

methods:{
 pageChange: function(page){
 if (this.currentpage != page) {
 this.currentpage = page;
 this.$dispatch('page-change', page); //父子組件間的通信:==>子組件通過(guò)$diapatch(),分發(fā)事件,父組件冒泡通過(guò)v-on:page-change監(jiān)聽(tīng)到相應(yīng)的事件;
 };
 }
 }

組件交互

組件寫(xiě)完了,問(wèn)題來(lái)了,用戶點(diǎn)擊發(fā)生頁(yè)面改變,你怎么通知其他組件作出相應(yīng)的變化. 可以在頁(yè)角發(fā)生改變的函數(shù)下,插一條語(yǔ)句通知其他組件。不過(guò)這種方法是很差的做法??梢允褂?/p>

watch: {
 currentpage: function(oldValue , newValue){
 console.log(arguments)
 }
}

觀察了currentpage數(shù)據(jù)當(dāng)它改變的時(shí)候,可以獲取前后值。然后通知其他組件。

完整的代碼可以看 github:vue-pagination

本文已被整理到了《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。

關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。

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

相關(guān)文章

  • 關(guān)掉vue插件Vetur格式化的時(shí)候自動(dòng)添加的樣式操作

    關(guān)掉vue插件Vetur格式化的時(shí)候自動(dòng)添加的樣式操作

    這篇文章主要介紹了關(guān)掉vue插件Vetur格式化的時(shí)候自動(dòng)添加的樣式操作,文章圍繞主題展開(kāi)操作過(guò)程,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-05-05
  • 一篇文章讓你看懂封裝Axios

    一篇文章讓你看懂封裝Axios

    axios的封裝和api接口的統(tǒng)一管理,其實(shí)主要目的就是在幫助我們簡(jiǎn)化代碼和利于后期的更新維護(hù),這篇文章主要給大家介紹了關(guān)于封裝Axios的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 在vue項(xiàng)目中引用Iview的方法

    在vue項(xiàng)目中引用Iview的方法

    iView 是一套基于 Vue.js 的開(kāi)源 UI 組件庫(kù),主要服務(wù)于 PC 界面的中后臺(tái)產(chǎn)品。這篇文章主要介紹了在vue項(xiàng)目中引用Iview的方法,需要的朋友可以參考下
    2018-09-09
  • vue實(shí)現(xiàn)選項(xiàng)卡案例

    vue實(shí)現(xiàn)選項(xiàng)卡案例

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)選項(xiàng)卡案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue實(shí)現(xiàn)點(diǎn)擊導(dǎo)航欄當(dāng)前標(biāo)簽后變色功能

    Vue實(shí)現(xiàn)點(diǎn)擊導(dǎo)航欄當(dāng)前標(biāo)簽后變色功能

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)點(diǎn)擊導(dǎo)航欄當(dāng)前標(biāo)簽后變色功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Vue2.0系列之過(guò)濾器的使用

    Vue2.0系列之過(guò)濾器的使用

    這篇文章主要介紹了Vue2.0系列之過(guò)濾器的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Vue.js實(shí)戰(zhàn)之Vuex的入門教程

    Vue.js實(shí)戰(zhàn)之Vuex的入門教程

    這篇文章主要給大家介紹了Vue.js實(shí)戰(zhàn)之Vuex的入門教程,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • Vue3實(shí)現(xiàn)刷新頁(yè)面局部?jī)?nèi)容的示例代碼

    Vue3實(shí)現(xiàn)刷新頁(yè)面局部?jī)?nèi)容的示例代碼

    本文主要介紹了Vue3實(shí)現(xiàn)刷新頁(yè)面局部?jī)?nèi)容的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Vue中this.$router.push參數(shù)獲取方法

    Vue中this.$router.push參數(shù)獲取方法

    下面小編就為大家分享一篇Vue中this.$router.push參數(shù)獲取方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 詳解vue路由

    詳解vue路由

    這篇文章主要介紹了vue路由的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)vue路由知識(shí),感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論