vue 의 사용자 정의 페이지 플러그 인 구성 요소 의 예제
우선 페이지 모듈 을 새로 만 듭 니 다.
모듈 에 해당 하 는 코드 를 도입 합 니 다.(상세 한 설명 이 있 습 니 다)
template 중
<div class="page-bar">
<ul>
<li class="first">
<span> {{dataNum}} {{cur}} / {{all}} </span>
</li>
<li v-if="cur>1">
<a v-on:click="cur--,pageClick()"><</a>//
</li>
<li v-if="cur==1">
<a class="banclick"><</a>//
</li>
<li class="li_a" v-for="index in indexs" v-bind:class="{ 'active': cur == index}">
<a v-on:click="btnClick(index)">{{ index }}</a>//
</li>
<li v-if="cur!=all">
<a v-on:click="cur++,pageClick()">></a>//
</li>
<li v-if="cur == all">
<a class="banclick">></a> //
</li>
<li class="last_li">
<span> <i>{{all}}</i> </span> //
</li>
</ul>
</div>
스타일 의 내용
.page-bar a {
width: 34px;
height: 34px;
border: 1px solid #ddd;
text-decoration: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
/*margin-left: -1px;*/
line-height: 34px;
color: #333;
cursor: pointer
}
.page-bar .li_a a:hover {
background-color: #eee;
border: 1px solid #40A9FF;
color: #40A9FF;
}
.page-bar a.banclick {
cursor: not-allowed;
}
.page-bar .active a {
color: #fff;
cursor: default;
background-color: #1890FF;
border-color: #1890FF;
}
.page-bar i {
font-style: normal;
color: #d44950;
margin: 0px 4px;
font-size: 14px;
}
script
export default {
//
name: "paging",
// , , !
props : ["dataAll","dataCur","datanum","dataDatanum"],
data() {
return {
all: this.dataAll, //
cur: this.dataCur ,//
num: this.datanum , //
dataNum: this.dataDatanum,//
}
},
watch: {
cur: function(oldValue, newValue) {
// change
this.$emit('change', oldValue)
//
}
},
methods: {
btnClick: function(data) { //
if(data != this.cur) {
this.cur = data
}
},
pageClick: function() {
console.log(' ' + this.cur + ' ');
// change
//
this.$emit('change', this.cur)
}
},
computed: {
indexs: function() {
var left = 1;
var right = this.all;
var ar = [];
if(this.all >= this.num ) {
if(this.cur > 3 && this.cur < this.all - 2) {
left = this.cur - (this.num-1)/2
right = this.cur + (this.num-1)/2
} else {
if(this.cur <= 3) {
left = 1
right = this.num
} else {
right = this.all
left = this.all - (this.num - 1);
}
}
}
while(left <= right) {
ar.push(left)
left++
}
return ar
}
}
}
상위 구성 요소 내용
<template>
// ,
<div class="page">
// props , change ,
<paging :dataAll="all" :dataCur="cur" :datanum="num" :dataDatanum="dataNum" @change="pageChange"></paging>
</div>
</template>
<style scoped>
.page {
width: 100%;
min-width: 1068px;
height: 36px;
margin: 40px auto;
}
</style>
<script>
import Paging from './paging'
export default {
name: "homepage",
components: {
Paging
},
data() {
return {
all: 40, //
cur: 1, //
num: 7, //
dataNum: 400, //
}
},
methods: {
//
pageChange: function(page) {
this.cur = page
}
}
}
</script>
마지막 으로 다시 저장,다시 실행
npm run dev
주의 하 다.
자신의 취향 에 따라 스스로 페이지 를 만 들 수 있 습 니 다.저 는 다른 사람의 기초 위 에 페이지 번호 와 현재 페이지 수 를 추 가 했 습 니 다.또한 점프 하 는 페이지 수 를 추가 할 수도 있 고 css 스타일 을 바 꿀 수도 있 습 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.