123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- {extend name="public/container"}
- {block name="title"}{$title}{/block}
- {block name="content"}
- <style type="text/css">body{background:#f5f5f5;}</style>
- <div class="page-list" id="guide">
- <section>
- <div ref="bsDom">
- <div>
- <div class="new-list" v-show="type == 'article'" v-cloak="">
- <ul>
- <li class="clearfix" v-for="item in article.list">
- <a :href="getArticleUrl(item)">
- <div class="picture fl"><img :src="item.image_input" /></div>
- <div class="text-info fr flex">
- <p class="tit" v-text="item.title"></p>
- <p class="content" v-text="item.synopsis"></p>
- <div class="time-wrapper">
- <span class="time" v-text="item.add_time"></span>
- <span class="count">浏览: {{item.visit}}次</span>
- </div>
- </div>
- </a>
- </li>
- </ul>
- </div>
- <p class="loading-line" v-show="loading == true"><i></i><span>正在加载中</span><i></i></p>
- <p class="loading-line" v-show="loading == false && loaded == false" v-cloak=""><i></i><span>加载更多</span><i></i></p>
- <p class="loading-line" v-show="loading == false && loaded == true" v-cloak=""><i></i><span>没有更多了</span><i></i></p>
- </div>
- </div>
- </section>
- </div>
- <script>
- require(['vue','axios','better-scroll','helper','store'],function(Vue,axios,BScroll,$h,storeApi){
- $cid = '<?=$cid?>' || '';
- new Vue({
- el:"#guide",
- data:{
- type:'article',
- article:{
- first:0,
- limit:8,
- list:[],
- loaded:false,
- top:0
- },
- loading: false,
- scroll:null
- },
- watch:{
- type:function(v,old){
- this[old].top = this.scroll.startY;
- this[v].list.length || this.getList();
- this.$nextTick(function(){
- this.scroll.scrollTo(0,this[v].top);
- this.scroll.refresh();
- });
- }
- },
- computed:{
- loaded:function(){
- return this[this.type].loaded;
- }
- },
- methods:{
- getArticleUrl:function(article){
- return article.url ? article.url : $h.U({c:'article',a:'visit',p:{id:article.id}});
- },
- getList:function(){
- if(this.loading) return ;
- this.getArticleList();
- },
- getArticleList:function(){
- var that = this,type = this.type,group = that[type];
- if(group.loaded) return ;
- this.loading = true;
- storeApi.getArticleList({
- cid:$cid||0,
- first:group.first,
- limit:group.limit
- },function(res){
- var list = res.data.data;
- group.loaded = list.length < group.limit;
- group.first += list.length;
- group.list = group.list.concat(list);
- that.$set(that,type,group);
- that.loading = false;
- that.$nextTick(function(){
- if(list.length) that.bScrollInit();
- that.scroll.finishPullUp();
- });
- },function(){that.loading = false});
- },
- bScrollInit:function () {
- var that = this;
- if(this.scroll === null){
- this.$refs.bsDom.style.height = (document.documentElement.clientHeight)+'px';
- this.$refs.bsDom.style.overflow = 'hidden';
- this.scroll = new BScroll(this.$refs.bsDom,{click:true,probeType:1,cancelable:false,deceleration:0.005,snapThreshold:0.1});
- this.scroll.on('pullingUp',function(){
- that.loading == false && that.getList();
- })
- }else{
- this.scroll.refresh();
- }
- }
- },
- mounted:function(){
- this.getList();
- }
- })
- })
- </script>
- {/block}
|