zoukankan      html  css  js  c++  java
  • VUE Vue列表分页切换数据 列表到详情页路由跳转

    页面代码:

    列表 :to="{path:'/newsDetail',query:{id:item.id}}"获取详情页的路由id

    <ul class="news-list">

            <router-link v-for="item in pagerData" class="news-item" :to="{path:'/newsDetail',query:{id:item.id}}">

              <div class="media-pic">

                <img :src="item.avatar">

              </div>

              <div class="media-cont">

                <h1 class="media-title ellipsis">{{item.title}}</h1>

                <p class="media-abstract ellipsis-line2">{{item.abstract}}</p>

                <p class="media-time">{{item.source}}&nbsp;&nbsp;|&nbsp;&nbsp;{{item.publishTime | formatDate}}</p>

              </div>

            </router-link>

    </ul>

    分页 页码大于1的时候显示:

    <div v-if="pageCount>1" class="pagination-cont">

            <el-pagination background

              @size-change="handleSizeChange"

              @current-change="handleCurrentChange"

              :page-size="pageSize"

              layout="total, prev, pager, next, jumper"

              :total="this.total">

            </el-pagination>

    </div>

    Js:

    <script>

    import {formatDate} from '../../common/js/date.js'; //引入时间转换函数

    const ERR_OK = 0;

    export default {

      data() {

        return {

          news: [], //新闻列表数据

          pagerData:[], //当前分页数据

          curPage: 1, //当前页码

          pageSize: 6, //当前分页数据条数

          total: 20, //数据总条数

          pageCount: 1 //分页数

        };

      },

      components: {

      },

      created:function(){

        this.getList(); //初始化加载数据

      },

      methods: {

           //获取数据

      getList(){

        this.$http.get('/api/news').then((response) => {

              response = response.body;

              if(response.errno === ERR_OK){

                  this.news = response.data;

                  this.total= this.news.length;

                  this.pageCount = Math.ceil(this.total / this.pageSize);//分页数

                  var newPageInfo = [];

                  for(var i = 0; i < this.pageSize; i++){

                      var index = i+(this.curPage-1)*this.pageSize;

                      if(index>this.total-1)break;

                      newPageInfo[newPageInfo.length] = this.news[index];

                  }

                  this.pagerData = newPageInfo; //分页数据

                  //console.log(this.pageCount);

              }

            });

        },

        handleSizeChange(val) {

            //console.log(val);

        },

        handleCurrentChange(val) {

            //console.log(val);

            this.curPage = val

            this.getList(); //切换分页改变列表数据

          },

      },

      filters: {

          formatDate(time) {

              let date = new Date(time);

              return formatDate(date, 'yyyy-MM-dd hh:mm');

          }

      },

    }

    </script>

    详情页面代码

    <template>

      <div class="container">

          <div v-for="(item, index) in this.detail" v-show="item.id==detailId">

            <h1 class="title_bline">{{item.title}}</h1>

            <div class="content" >

              <p class="media-time">

                {{item.source}}&nbsp;&nbsp;&nbsp;&nbsp;{{item.publishTime | formatDate}}&nbsp;&nbsp;&nbsp;&nbsp;<span :size="size">浏览:{{size}}</span>

              </p>

              <p v-html="item.content"></p>

              <img :src="item.avatar">

            </div>

          </div>

      </div>

    </template>

    Js:

    <script>

    import {formatDate} from '../../common/js/date.js';

    const ERR_OK = 0;

    export default {

      data() {

        return {

          detail: [],

          size: 4,

          detailId:'',

        };

      },

      created:function(){

        this.getList();

      },

      methods:{

        getList(){

          this.$http.get('/api/news').then((response) => {

            response = response.body;

            if(response.errno === ERR_OK){

              this.detail = response.data;

              this.detailId = this.$route.query.id //当前数据的ID等于跳转路由的ID

              console.log(this.detailId);

            }

          });

        },

      },

      filters: {

        formatDate(time) {

          let date = new Date(time);

          return formatDate(date, 'yyyy-MM-dd hh:mm');

        }

      },

    }

    </script>

  • 相关阅读:
    Java设计模式之行为型模式(观察者模式)
    Java设计模式之行为型模式(备忘录模式)
    Java设计模式之行为型模式(中介者模式)
    Java设计模式之行为型模式(迭代器模式)
    javascript 函数声明和函数表达式的区别(学习笔记)
    javascript Array Methods(学习笔记)
    工作记录
    redis
    vue prop属性
    读vue源码笔记(1)
  • 原文地址:https://www.cnblogs.com/haimeimei/p/13228409.html
Copyright © 2011-2022 走看看