vue2的小练习——实现自定义指令v-nodata的商品列表

news2024/9/27 7:18:22

实现:一个商品列表,每个商品包含商品名称、商品价格,我们可以对每个商品进行删除操作,要求如下。

  1. 实现一个自定义指令v-nodata,指令的功能是当商品列表中没有商品数据时会显示一个div,div中有“暂无数据”四个字,当商品列表中有数据时就不展示。
  2. 定义一个过滤器,对商品的金额进行过滤,实现以千分质形式展示并保留2位小数。
  3. 实现一个混入,将所有的数据、方法和过滤器都定义在里面
  4. 有一个“还原”按钮,点击按钮后商品中的数据将还原。

效果如下图所示

 

 

 接下来是代码,看代码标题就知道放在哪里了

<!-- GoodsList.vue -->

<template>
  <ul>
    <li v-for="(good, index) in goods" :key="index">
      <span>{{ good.name }}</span>
      <span>{{ good.price.toFixed(2) }}</span>
      <button @click="deleteGood(index)">删除</button>
    </li>
  </ul>
</template>

<script>
export default {
  props: {
    goods: {
      type: Array,
      required: true,
    },
  },
  methods: {
    deleteGood(index) {
      this.$emit('delete', index);
    },
  },
};
</script>

<style scoped>
ul {
  padding: 0;
}

li {
  list-style: none;
  width: 400px;
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
}

button {
  padding: 5px 10px;
  background-color: #ddd;
  border: none;
  cursor: pointer;
}
</style>
<!-- NoData.vue -->

<template>
  <p>没有数据</p>
</template>

<style scoped>
p {
  color: red;
}
</style>
<!-- App.vue -->

<template>
  <div id="app">
    <button @click="reset">还原</button>
    <goods-list :goods="goodsList" @delete="delGood" />
    <no-data v-if="goodsList.length === 0" />
  </div>
</template>

<script>
import GoodsList from './components/GoodsList.vue';
import NoData from './components/NoData.vue';

export default {
  components: {
    GoodsList,
    NoData,
  },
  data() {
    return {
      goodsList: [
        { name: '电饭煲', price: 200.133232 },
        { name: '电视机', price: 880.998392 },
        { name: '电冰箱', price: 650.2034 },
        { name: '电脑', price: 4032.9930 },
        { name: '电磁炉', price: 210.4322 },
      ],
    };
  },
  methods: {
    delGood(index) {
      this.goodsList.splice(index, 1);
    },
    reset() {
      this.goodsList = [
        { name: '电饭煲', price: 200.133232 },
        { name: '电视机', price: 880.998392 },
        { name: '电冰箱', price: 650.2034 },
        { name: '电脑', price: 4032.9930 },
        { name: '电磁炉', price: 210.4322 },
      ];
    },
  },
};
</script>

<style scoped>
#app ul li {
  list-style: none;
  width: 400px;
  display: flex;
  justify-content: space-between;
}
</style>
// main.js

import Vue from 'vue';
import App from './App.vue';

new Vue({
  render: (h) => h(App),
}).$mount('#app');
快尝试一下吧。记得点赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node.js mongoose middleware

目录 官方文档 简介 定义模型 注册中间件 创建doc实例&#xff0c;并进行增删改查 方法名和注册的中间件名相匹配 执行结果 分析 错误处理中间件 手动抛出错误 注意点 官方文档 Mongoose v8.0.3: Middleware 简介 在mongoose中&#xff0c;中间件是一种允许在执…

智能停车场系统施工布线方案

一、停车场系统所用的控制主板的信号线是不可以与交流电源线平行铺设的&#xff0c;所以应该尽量避免穿在同一PVC管内。 二、停车场系统在布线的时候需要避免导线产生接头。如果必须有接头&#xff0c;那么接头也应该使用压线或焊接并作防水处理。 三、停车场布线所有外部设备…

玩转大数据19:数据治理与元数据管理策略

随着大数据时代的到来&#xff0c;数据已经成为企业的重要资产。然而&#xff0c;如何有效地管理和利用这些数据&#xff0c;成为了一个亟待解决的问题。数据治理和元数据管理是解决这个问题的关键。 1.数据治理的概念和重要性 数据治理是指对数据进行全面、系统、规范的管理…

netty线程调度定制

1、netty的线程调度问题 在netty的TCP调度中&#xff0c;线程的调度封装在NioEventLoopGroup中&#xff0c;线程执行则封装在NioEventLoop中。 线程调度规则封装在MultithreadEventExecutorGroup的next方法中&#xff0c;这个方法又封装了EventExecutorChooserFactory&#xf…

低代码核心能力详解:简化应用开发的新思路

低代码平台作为一种快速地应用开发解决方法&#xff0c;为中小企业实现数字化转型提供了机会。但是&#xff0c;对于一些刚开始触碰低代码平台的企业来说&#xff0c;了解其核心能力是很重要的。本文将详细分析低代码平台的核心能力&#xff0c;并在挑选低代码平台以前为中小企…

Jmeter接口程序项目实战教程

1.什么是jmeter&#xff1f; JMeter是100%完全由Java语言编写的&#xff0c;免费的开源软件&#xff0c;是非常优秀的性能测试和接口测试工具&#xff0c;支持主流协议的测试 2.jmeter能做什么&#xff1f; JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具&am…

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 UDP通讯过程2.3 优点2.4 应用 3. WIZnet以太网芯片4. UDP通信示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPyt…

drf知识--01

前后端开发模式 在开发Web应用中&#xff0c;有两种应用模式&#xff1a; 前后端混合开发: bbs 项目--renderajax 1、全栈开发--前端html后端都是一个人写 2、前端人员&#xff1a;写空页面&#xff0c;没有模板语法&#xff0c;只要html&#xff0c;c…

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点&#xff0c;其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…

Opencv实验合集——实验四:图片融合

1.概念 图像融合是将两个或多个图像结合在一起&#xff0c;创建一个新的图像的过程。这个过程的目标通常是通过合并图像的信息来获得比单个图像更全面、更有信息量的结果。图像融合可以在许多领域中应用&#xff0c;包括计算机视觉、遥感、医学图像处理等。 融合的方法有很多…

同义词替换器降低论文重复率的最新技术动态

大家好&#xff0c;今天来聊聊同义词替换器降低论文重复率的最新技术动态&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;同义词替换器降低论文重复率的最…

Jmeter的接口测试详细步骤并实现业务闭环

一、首先是了解Jmeter接口测试用到的组件 1、测试计划&#xff1a;Jmeter的起点和容器2、线程组&#xff1a;代表一定的虚拟用户3、取样器&#xff1a;发送请求的最小单元4、逻辑控制器&#xff1a;控制组件的执行顺序5、前置处理器&#xff1a;在请求之前的操作6、后置处理器…

SOME/IP SubscriberEventGroup

1 SOME/IP SubscriberEventGroup SubscriberEventGroup是SOME/IP中的一种服务发现和注册的消息类型,它用于让服务使用者订阅服务提供者的事件组。 事件组是一种将服务的方法和字段分组的方式,它可以让服务使用者只接收感兴趣的数据,而不是所有的数据。 SubscriberEventGrou…

接口测试 — 8.接口测试的认证

1、接口的安全机制 一般在实际项目的接口开发中&#xff0c;接口的安全机制是绕不开的一个话题。不管是自己内部使用的接口也好&#xff0c;还是给第三方使用的接口也好。如果毫无限制的给任何人调用&#xff0c;那么必然会带来诸多安全问题。 例如&#xff1a;重要数据泄密&…

node.js mongoose schemaTypes

目录 官方文档 简介 SchemaType 示例 配置SchemaType规则 通用规则 特定schemaType规则 String Number Date Map monggose会根据shcemaType将文档值转换成指定的类型 官方文档 Mongoose v8.0.3: SchemaTypes 简介 SchemaTypes是在使用Mongoose时&#xff0c;用于…

Oracle定时任务的创建与禁用/删除

在开始操作之前&#xff0c;先从三W开始&#xff0c;即我常说的what 是什么&#xff1b;why 为什么使用&#xff1b;how 如何使用。 一、Oracle定时器是什么 Oracle定时器是一种用于在特定时间执行任务或存储过程的工具&#xff0c;可以根据需求设置不同的时间段和频率来执行…

基于EasyDarwin、ffmpeg实现rtsp推流

目录 1 安装EasyDarwin 2 编译安装ffmpeg 3 启动EasyDarwin 4 ffmepg推流 5 百度网盘备份 某项目中测试时需要用到推流&#xff0c;于是用EasyDarwin、ffmpeg实现了RTSP推流&#xff0c;简单记录下过程&#xff0c; 1 安装EasyDarwin 这个可以去官网下载&#xff1a;Eas…

【openwrt学习笔记】IPV6 ND协议学习和socket编程

目录 一、参考链接二、学习目标三、代码解析3.1 仅解析NA报文保存设备mac和ipv6地址信息3.1.1 open_ns_socket3.1.2 recv_ns_pack 3.2 解析NA和NS报文中DAD报文保存设备mac和ipv6地址信息3.2.1 open_ns_na_socket3.2.2 recv_ns_na_pack 四、代码优化4.1 BPF参考学习资料4.2 代码…