1
1
<template >
2
- <div >
2
+ <div class = " news-view " >
3
3
<spinner :show =" loading" ></spinner >
4
- <news-list-nav :page =" page" :maxPage =" maxPage" :type =" type" v-if =" displayedPage > 0" ></news-list-nav >
4
+ <div class =" news-list-nav" >
5
+ <router-link v-if =" page > 1" :to =" '/' + type + '/' + (page - 1)" >< ; prev</router-link >
6
+ <a v-else class =" disabled" >< ; prev</a >
7
+ <span >{{ page }}/{{ maxPage }}</span >
8
+ <router-link v-if =" hasMore" :to =" '/' + type + '/' + (page + 1)" >more > ; </router-link >
9
+ <a v-else class =" disabled" >more > ; </a >
10
+ </div >
5
11
<transition :name =" transition" >
6
12
<div class =" news-list" :key =" displayedPage" v-if =" displayedPage > 0" >
7
13
<transition-group tag =" ul" name =" item" >
10
16
</transition-group >
11
17
</div >
12
18
</transition >
13
- <news-list-nav :page =" page" :maxPage =" maxPage" :type =" type" v-if =" displayedPage > 0" ></news-list-nav >
14
19
</div >
15
20
</template >
16
21
17
22
<script >
18
23
import Spinner from ' ./Spinner.vue'
19
- import NewsListNav from ' ./NewsListNav.vue'
20
24
import Item from ' ./Item.vue'
21
25
import { watchList } from ' ../store/api'
22
26
@@ -27,7 +31,6 @@ export default {
27
31
28
32
components: {
29
33
Spinner,
30
- NewsListNav,
31
34
Item
32
35
},
33
36
@@ -57,6 +60,9 @@ export default {
57
60
maxPage () {
58
61
const { itemsPerPage , lists } = this .$store .state
59
62
return Math .ceil (lists[this .type ].length / itemsPerPage)
63
+ },
64
+ hasMore () {
65
+ return this .page < this .maxPage
60
66
}
61
67
},
62
68
@@ -106,10 +112,31 @@ export default {
106
112
</script >
107
113
108
114
<style lang="stylus">
115
+ .news-view
116
+ padding-top 45px
117
+
118
+ .news-list-nav , .news-list
119
+ background-color #f f f
120
+ border-radius 2px
121
+
122
+ .news-list-nav
123
+ padding 15px 30px
124
+ position fixed
125
+ text-align center
126
+ top 55px
127
+ left 0
128
+ right 0
129
+ z-index 998
130
+ box-shadow 0 1px 2px rgba (0 ,0 ,0 ,.1 )
131
+ a
132
+ margin 0 1em
133
+ .disabled
134
+ color #c c c
135
+
109
136
.news-list
137
+ position absolute
138
+ margin 30px 0
110
139
width 100%
111
- max-width 800px
112
- margin 30px auto
113
140
transition all .5s cubic-bezier (.55 ,0 ,.1 ,1 )
114
141
ul
115
142
list-style-type none
0 commit comments