zoukankan      html  css  js  c++  java
  • 项目vue2.0仿外卖APP(七)

    ratings评价列表页实现

    在ratings.vue组件里开发

    首先先引入seller数据:

    书写模板结构:

    由于评价页又有之前写过的star.vue组件,所以又要在ratings.vue组件引入:

    import star from 'components/star/star';

    并且注册:

    components: {
          star
        }

    这部分的模板:

    <template>
      <div class="ratings">
        <div class="ratings-content">
          <div class="overview">
              <div class="overview-left">
              <h1 class="score">{{seller.score}}</h1>
              <div class="title">综合评分</div>
              <div class="rank">高于周边商家{{seller.rankRate}}%</div>
            </div>
            <div class="overview-right">
              <div class="score-wrapper">
                <span class="title">服务态度</span>
                <star :size="36" :score="seller.serviceScore"></star>
                <span class="score">{{seller.serviceScore}}</span>
              </div>
              <div class="score-wrapper">
                <span class="title">商品评分</span>
                <star :size="36" :score="seller.foodScore"></star>
                <span class="score">{{seller.foodScore}}</span>
              </div>
              <div class="delivery-wrapper">
                <span class="title">送达时间</span>
                <span class="delivery">{{seller.deliveryTime}}分钟</span>
              </div>
            </div>
          </div>
          <split></split>
        </div>
      </div>
    </template>

    书写样式:

    整个ratings区块绝对定位的:

    .ratings
        position: absolute
        top: 174px
        bottom: 0
        left: 0
         100%
        overflow: hidden

    这里的overview-left区块是固定宽度,overview-right区块是自适应宽度。所以还是用了flex布局。

    而且这里overview-left还是响应式的:

    .overview-left
            flex: 0 0 137px
            padding: 6px 0
             137px
            border-right: 1px solid rgba(7, 17, 27, 0.1)
            text-align: center
            @media only screen and (max- 320px)
              flex: 0 0 120px
               120px

    在这个区块下方还有个灰色间隔,因为在其他页面也有,所以这里也可以用组件化开发一个split.vue:

    然后在ratings.vue引入并注册。

    这样就可以用在模板里面了:

    这里再通过vue.resource去获取之前处理过的data.json里面的ratings数据:

    可以看到,数据已经出来了:

    ratings.vue:

    ratingsselect.vue:

     

    接下来:

    这三个按钮都是可以点击的,点击哪一个就会显示对应的评价,而且点击后也会出现高亮。下面还有一个可选择的文字。

    当然,我们还是用组件化的思想来开发。

    ratingselect.vue组件:

    接着就可以在ratings.vue里引入和注册了

    接下添加内容:

    再写样式

    结果就是这样:

    接着继续完成页面的评价内容:

    并且添加样式

    这样页面的基本结构就出来了:

    接下来在ratings.vue组件中给页面添加滚动:

    加ref属性:

    这样就可以滚动页面了。

    接下来要实现的功能就是根据我们点击不同的按钮,显示按钮所要求的评论内容。

    这里还需要将ratings.vue组件的ratings数据传给ratingselect.vue组件:

    在ratingselect.vue组件计算属性:得出满意的和不满意的评论数,用filter()来过滤:

    然后把数据传给DOM:

    在ratingselect.vue组件添加按钮的点击状态:ALL为2:const ALL = 2;

    并且添加.active的样式。

    接下来要用到组件间的通信了,来传递子组件所点击的是那个按钮:

  • 相关阅读:
    整理打印PI值
    使用自连接、for xml path('')和stuff合并显示多行数据到一行中(转)
    ThinkPHP+jQuery EasyUI Datagrid查询数据的简单处理
    ThinkPHP学习(三)
    Apache+PHP配置PATHINFO的一个小问题
    ThinkPHP学习(二)
    接口签名工具类
    RSA加密和解密工具类
    kafka项目中踩到的一个坑(客户端和服务器端版本不一致问题)
    自己实现字符串转整数(不使用JDK的字符串转整数的方法)
  • 原文地址:https://www.cnblogs.com/Chen-XiaoJun/p/6254398.html
Copyright © 2011-2022 走看看