11<template >
2- <div >
2+ <div class = " news-view " >
33 <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 >
511 <transition :name =" transition" >
612 <div class =" news-list" :key =" displayedPage" v-if =" displayedPage > 0" >
713 <transition-group tag =" ul" name =" item" >
1016 </transition-group >
1117 </div >
1218 </transition >
13- <news-list-nav :page =" page" :maxPage =" maxPage" :type =" type" v-if =" displayedPage > 0" ></news-list-nav >
1419 </div >
1520</template >
1621
1722<script >
1823import Spinner from ' ./Spinner.vue'
19- import NewsListNav from ' ./NewsListNav.vue'
2024import Item from ' ./Item.vue'
2125import { watchList } from ' ../store/api'
2226
@@ -27,7 +31,6 @@ export default {
2731
2832 components: {
2933 Spinner,
30- NewsListNav,
3134 Item
3235 },
3336
@@ -57,6 +60,9 @@ export default {
5760 maxPage () {
5861 const { itemsPerPage , lists } = this .$store .state
5962 return Math .ceil (lists[this .type ].length / itemsPerPage)
63+ },
64+ hasMore () {
65+ return this .page < this .maxPage
6066 }
6167 },
6268
@@ -106,10 +112,31 @@ export default {
106112 </script >
107113
108114<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+
109136.news-list
137+ position absolute
138+ margin 30px 0
110139 width 100%
111- max-width 800px
112- margin 30px auto
113140 transition all .5s cubic-bezier (.55 ,0 ,.1 ,1 )
114141 ul
115142 list-style-type none
0 commit comments