[ 蓝桥杯Web真题 ]-外卖给好评

目录

介绍

准备

目标

效果

规定

思路

解答参考


介绍

外卖是现代生活中必备的一环。收到外卖后,各大平台软件常常会邀请用户在口味,配送速度等多个方面给与评分。在 element-ui 组件中,已经有相应的 Rate 组件,但是已有组件只能对单一维度进行评分,在外卖评分这种场景中,样式基本上是固定的,功能也基本一样。若每写一个页面都要去复制一份类似代码,就会产生大量重复的代码,既不利于后期的维护,代码也不够简洁。为此需要前端工程师对 element-ui 的原 Rate 组件进行二次封装。

准备

开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:

├── element-ui-2.6.2
│   ├── element-icons.ttf
│   ├── element-icons.woff
│   ├── element-ui.min.js
│   └── element-ui.style.css
├── index.html
├── js
│   ├── http-vue-loader.js
│   └── vue.min.js
├── my-rate.vue
└── effect.gif

其中:

  • index.html 是主页面。
  • element-ui-2.6.2 文件夹中存放的是 element-ui 库相关的脚本文件、样式文件及字体。
  • js 文件夹中存放的是 vue 及 http-vue-loader 库相关文件。
  • my-rate.vue 是待封装的评分组件文件。
  • effect.gif 是完成后的效果图。

注意:打开环境后发现缺少项目代码,请手动键入下述命令进行下载:

cd /home/project
wget https://labfile.oss.aliyuncs.com/courses/18213/03.zip && unzip 03.zip && rm 03.zip

在浏览器中预览 index.html 页面,显示如下所示:

目标

请在 my-rate.vue 文件中补充代码,具体要求如下:

  1. my-rate.vue 组件能够对不同的维度进行评分。

  2. my-rate.vue 组件对外抛出 change 事件,在三项评分均完成后,触发 change 事件,change 事件包含一个参数,用于传递改变后的分数值,其类型是对象,包含以下属性:

效果

完成后的效果见 effect.gif (提示:可以通过 VS Code 或者浏览器预览 gif 图片)。

实现该功能所需的 el-rate 组件 api 如下:

参数说明类型默认值
value/v-model绑定值number0
show-score是否显示当前分数,show-score 和 show-text 不能同时为真booleanfalse
change(event 事件)分值改变时触发,参数是改变后的分值(changed: object) => void

规定

  • 请勿修改my-rate.vue文件外的任何内容。

  • 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径、class 名、id 名、图片名等,以免造成无法判题通过。自己先做一下吧:传送门


思路

这道题目主要是考察Vue以及elementUI的知识点。需要学会通过提供的组件API来实现相应的功能。同时也需要会使用Vue进行自定义事件的绑定来进行数据的传递。若对组件间如何实现通信感兴趣的小伙伴可以这篇文章!

解答参考

 <ul class="rate-list" >
      <li>
        <!-- TODO 补全 el-rate 属性 -->
        送餐速度:<el-rate v-model="speed" show-score  @change="changeHandler"></el-rate>
      </li>
      <li>
        <!-- TODO 补全 el-rate 属性 -->
        外卖口味:<el-rate v-model="flavour" show-score  @change="changeHandler"></el-rate>
      </li>
      <li>
        <!-- TODO 补全 el-rate 属性 -->
        外卖包装:<el-rate v-model="pack"  show-score  @change="changeHandler"></el-rate>
      </li>
    </ul>

对每一个el-rate标签使用v-model来进行绑定,获取它对应的数值。同时加上show-score属性让其显示当前分数。并未每一个标签绑定change事件,当数值改变时触发。

  methods:{
    changeHandler(){
      if(this.speed && this.flavour && this.pack){
        const rate = {
           speed: this.speed, // 送餐速度
           flavour: this.flavour, // 外卖口味
           pack: this.pack, // 外卖包装
        }
        this.$emit("change",rate)
      }
    }
  }

当有分值改变时,触发changeHandler函数,并判断三个属性是否都有对应的值,若有,则使用$emit对外抛出 change 事件,并传入对应的对象数值。

文件整体代码:

<template>
  <div class="block">
    <span class="demonstration">请为外卖评分: </span>
    <ul class="rate-list" >
      <li>
        <!-- TODO 补全 el-rate 属性 -->
        送餐速度:<el-rate v-model="speed" show-score  @change="changeHandler"></el-rate>
      </li>
      <li>
        <!-- TODO 补全 el-rate 属性 -->
        外卖口味:<el-rate v-model="flavour" show-score  @change="changeHandler"></el-rate>
      </li>
      <li>
        <!-- TODO 补全 el-rate 属性 -->
        外卖包装:<el-rate v-model="pack"  show-score  @change="changeHandler"></el-rate>
      </li>
    </ul>
  </div>
</template>
<style>
.block {
  border: 1px solid #c7c5c5;
  padding: 10px;
}
.rate-list {
  list-style: none;
  padding-inline-start: 20px;
  margin-block-start: 10px;
  margin-block-end: 10px;
}
.el-rate {
  display: inline-block;
}
</style>

<script>
module.exports = {
  data() {
    return {
      speed: 0, // 送餐速度
      flavour: 0, // 外卖口味
      pack: 0, // 外卖包装
    };
  },
  /* TODO: 考生需要完成以下内容 */
  methods:{
    changeHandler(){
      if(this.speed && this.flavour && this.pack){
        const rate = {
           speed: this.speed, // 送餐速度
           flavour: this.flavour, // 外卖口味
           pack: this.pack, // 外卖包装
        }
        this.$emit("change",rate)
      }
    }
  }
 
  
};
</script>

好啦,本文就到这里了,这道题比较简单就不过多讲解了!


http://www.niftyadmin.cn/n/5239347.html

相关文章

方案:博物馆门禁系统、报警系统、防碎警告的统一监控

一、背景与目标 博物馆的门禁系统、报警系统和防碎警告系统是确保博物馆安全的重要设备。此方案中&#xff0c;由于博物馆的30多套门禁系统分布在1公里的范围内&#xff0c;且跨度较大&#xff0c;因此需要对这些系统进行统一的数据采集和监控&#xff0c;以提高运维效率和管理…

第五章 接口函数

接口概念&#xff1a; 是Java语言中一种引用类型&#xff0c;是方法的集合&#xff0c;接口内部主要是封装了方法&#xff0c;包含抽象方法&#xff0c;默认方法&#xff0c;静态方法&#xff1b;接口不能创建对象&#xff0c;但是可以被实现implements类和接口的关系是实现关系…

隐马尔可夫模型笔记

1. 定义 隐马尔可夫模型是关于时序的概率模型&#xff0c;描述由一个隐藏的马尔可夫链随机生成不可观测的状态序列&#xff0c;再由各个状态随机生成一个观测而产生观测序列的过程。 隐马尔可夫模型由初始概率向量(pai)、状态转移概率矩阵(A)以及观测概率矩阵(B)确定。状态转移…

大数据的技术栈-逐步完善

目录 1.hadoop a.HDFS分布式文件系统 b.Yarn集群资源管理器 c.MapReduce sql引擎 d.Impala sql引擎 e.工具概观 2.数据仓库知识 a.Hive数据库 1)Hive Sql 2)数据库结构 b.Doris数据库 3.混合处理框架SPARK a.Spark b.集群架构 4.数仓模型知识 5.开发工具 a.Dbeaver b.Idea…

寻找两个有序数组的中位数算法(leetcode第4题)

题目描述&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输出&…

研发人员绩效考核难题及解决措施

研发部门是技术型企业的核心人员&#xff0c;研发人员的设计贯穿着产品实现过程包括后续的持续改进。倘若研发人员的设计源头得以保障&#xff0c;那么后续工作包括研发人员的绩效考核&#xff0c;相对简单。接下来华恒智信便根据多年来从事的人力资源相关的服务经验为您对于研…

Motion Plan之轨迹生成笔记 (2)

Motion Plan之搜索算法笔记 Motion Plan之基于采样的路径规划算法笔记 Motion Plan之带动力学约束路径搜索 什么是基于优化的轨迹生成 Optimization-Based Trajectory Planning&#xff08;基于优化的轨迹规划&#xff09;是一种常用的方法&#xff0c;用于生成自动化系统&am…

系统运维工具KSysAK——让运维回归简单

系统运维工具KSysAK——让运维回归简单 1.基本信息 1.1概述 系统异常定位分析工具KSysAK是云峦操作系统研发及运维人员总结开发及运维经验&#xff0c;设计和研发的多个运维工具的集合&#xff0c;可以覆盖系统的日常监控、线上问题诊断和系统故障修复等常见运维场景。 工具…