vue实现商品列表,组件抽离

news2024/12/26 11:48:01

1.需求说明

  1. my-tag 标签组件封装

​ (1) 双击显示输入框,输入框获取焦点

​ (2) 失去焦点,隐藏输入框

​ (3) 回显标签信息

​ (4) 内容修改,回车 → 修改标签信息

  1. my-table 表格组件封装

​ (1) 动态传递表格数据渲染

​ (2) 表头支持用户自定义

​ (3) 主体支持用户自定义

2.效果

在这里插入图片描述

3.代码

<template>
  <div class="table-case">
    <table class="my-table">
      <thead>
        <tr>
          <th>编号</th>
          <th>名称</th>
          <th>图片</th>
          <th width="100px">标签</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item,index) in goods" :key="item.id">
          <td>{{ index+1 }}</td>
          <td>{{ item.name}}</td>
          <td>
            <img :src="item.picture" />
          </td>
          <td>
            <MyTag :id="item.id" :tag="item.tag"  @updateTag="updateTag"></MyTag>
          </td>
        </tr>
        
      </tbody>
    </table>
  </div>
</template>

<script>
import MyTag from './components/MyTag.vue'
export default {
  name: 'TableCase',
  components: {
    MyTag
  },
  methods:{
    updateTag(tag,id){
      
      this.goods.forEach((item) => {if(item.id==id){item.tag = tag}})
    }
  },
  data() {
    return {
      goods: [
        {
          id: 101,
          picture:
            'https://yanxuan-item.nosdn.127.net/f8c37ffa41ab1eb84bff499e1f6acfc7.jpg',
          name: '梨皮朱泥三绝清代小品壶经典款紫砂壶',
          tag: '茶具',
        },
        {
          id: 102,
          picture:
            'https://yanxuan-item.nosdn.127.net/221317c85274a188174352474b859d7b.jpg',
          name: '全防水HABU旋钮牛皮户外徒步鞋山宁泰抗菌',
          tag: '男鞋',
        },
        {
          id: 103,
          picture:
            'https://yanxuan-item.nosdn.127.net/cd4b840751ef4f7505c85004f0bebcb5.png',
          name: '毛茸茸小熊出没,儿童羊羔绒背心73-90cm',
          tag: '儿童服饰',
        },
        {
          id: 104,
          picture:
            'https://yanxuan-item.nosdn.127.net/56eb25a38d7a630e76a608a9360eec6b.jpg',
          name: '基础百搭,儿童套头针织毛衣1-9岁',
          tag: '儿童服饰',
        },
      ],
    }
  },
}
</script>

<style lang="less" scoped>
.table-case {
  width: 1000px;
  margin: 50px auto;
  img {
    width: 100px;
    height: 100px;
    object-fit: contain;
    vertical-align: middle;
  }

  .my-table {
    width: 100%;
    border-spacing: 0;
    img {
      width: 100px;
      height: 100px;
      object-fit: contain;
      vertical-align: middle;
    }
    th {
      background: #f5f5f5;
      border-bottom: 2px solid #069;
    }
    td {
      border-bottom: 1px dashed #ccc;
    }
    td,
    th {
      text-align: center;
      padding: 10px;
      transition: all 0.5s;
      &.red {
        color: red;
      }
    }
    .none {
      height: 100px;
      line-height: 100px;
      color: #999;
    }
  }

}
</style>
<template>
  <div class="my-tag">
    <input 
      v-if="isEdit"
      ref="inp"
      class="input"
      type="text"
      placeholder="输入标签"
      :value="tag"
      @blur="isEdit=false"
      @keyup.enter="updateTag"
    />
    <div class="text" v-else @dblclick="handleClick" >
      {{ tag }}
    </div>
  </div>
</template>

<script>
export default {
  props:{
    tag: String,
    id: Number
  },
  data(){
    return {
      isEdit: false
    }
  },
  methods:{
    handleClick(){
      this.isEdit = true,
      this.$nextTick(()=>{
        
        this.$refs.inp.focus()
      })
    },
    updateTag(e){
      this.$emit('updateTag',e.target.value,this.id)
      this.isEdit = false
    }
  }

}
</script>

<style lang="less" scoped>
  .my-tag {
    cursor: pointer;
    .input {
      appearance: none;
      outline: none;
      border: 1px solid #ccc;
      width: 100px;
      height: 40px;
      box-sizing: border-box;
      padding: 10px;
      color: #666;
      &::placeholder {
        color: #666;
      }
    }
  }
</style>

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

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

相关文章

电表采集器有抗干扰的能力吗?

电表采集器作为一种数据采集和远程通讯设备&#xff0c;广泛应用于电力、能源、工业等领域。在这些环境中&#xff0c;电表采集器面临着各种各样的电磁干扰&#xff0c;如高频干扰、脉冲干扰、电磁辐射等。为了确保电表采集器的稳定运行和数据准确性&#xff0c;抗干扰能力成为…

极智AI | GPT-4 Turbo登场

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 GPT-4 Turbo登场。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 今天,OpenAI 的首届开发者大会揭幕 (真的像科…

python-28-日志模块Loguru的应用

参考为什么不推荐使用Python原生日志库&#xff1f; 参考loguru&#xff0c;一个神奇的 python 库 Loguru 是一个旨在为 Python 带来愉快的日志记录的库&#xff0c;它可以完全增强你的日志记录体验&#xff0c;并且非常易于使用。 对logging及Loguru进行使用对比。 1 Loguru的…

L4级自动驾驶前装量产车型来了,小马智行与丰田联合打造

11月5日&#xff0c;小马智行与丰田汽车联合发布的首款纯电自动驾驶出租车&#xff08;Robotaxi&#xff09;概念车在第六届进博会亮相&#xff0c;该车型基于广汽丰田生产的bZ4X纯电车辆平台打造&#xff0c;将搭载小马智行研发的第七代L4级自动驾驶乘用车软硬件系统。 今年8月…

实测Java批量导入百万级数据

JAVA通过ThreadPoolTaskExecutor批量插入百万级数据 文章目录 JAVA通过ThreadPoolTaskExecutor批量插入百万级数据一、前言二、实现步骤1、application.yml添加线程池配置信息2、业务类&#xff0c;创建多线程批量插入具体业务方法3、spring容器注入线程池bean对象4、测试 三、…

leetcode:13. 罗马数字转整数(python3解法)

难度&#xff1a;简单 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

C/S架构的医学影像PACS系统源码,应用于放射、超声、内窥镜、病理等影像科室

C/S架构的PACS系统&#xff0c;采用DICOM3.0国际标准设计&#xff0c;以大型关系型数据库作为数据和图像的存储管理工具&#xff0c;是集医学影像的采集、传输、存储、查询、诊断、报告、综合信息管理等于一体的综合应用系统。 系统主要进行病人信息和影像的获取、处理、存储、…

windows10录屏神器,轻松保存高光时刻

录制电脑屏幕成了人们日常生活中经常需要面对的任务&#xff0c;无论是为了制作教程、保存游戏精彩瞬间&#xff0c;还是为了录制在线会议&#xff0c;一个功能强大、简单易用的录屏软件成为人们的迫切需求。在Windows 10操作系统下&#xff0c;有多种录屏方法可供选择。本文将…

如何查看苹果手机电池健康情况?快速查询方法来了!

使用苹果手机的小伙伴们&#xff0c;你们是否关心自己手机的电池健康状况&#xff1f;想随时掌握电池的使用状态&#xff0c;却不知道在哪里查看&#xff1f;本文将为大家提供有关苹果手机电池健康的简单查询方法&#xff0c;让您能够随时随地轻松掌握手机电池的健康状况。 操作…

sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher

问题描述 sqlite3.NotSupportedError: deterministicTrue requires SQLite 3.8.3 or higher 解决方法 A kind of solution is changing the database from sqlite3 to pysqlite3. After acticate the virtualenv, install pysqlite. pip3 install pysqlite3 pip3 install …

CS免杀姿势

一&#xff1a;环境 1.公网vps一台 2.Cobalt Strike 4.7 3.免杀脚本 二&#xff1a;生成payload 生成一个payload c格式的x64位payload 三&#xff1a;免杀 下载免杀脚本 .c打开是这样的 把双引号里面的内容复制出来&#xff0c;放到脚本目录下的1.txt 运行生成器.…

刹车过电压保护

肖特基漏电流大&#xff0c;电池供电能省则省 最好是RCD缓冲&#xff0c;二极管要用快恢复 可以直接连&#xff0c;隔离可以用光耦或者逻辑门 问题4选的三极管Qg太大 问题九选的mos管Rdson太大 要并快恢复

蓝桥杯每日一题203.11.7

题目描述 题目分析 使用dp思维&#xff0c;当前位置是否可行是有上一位置推来&#xff0c;计算出最大的可行位置即可 #include <stdio.h> #include <string.h>#define N 256 int f(const char* s1, const char* s2) {int a[N][N];int len1 strlen(s1);int len2 …

如何在Python爬虫中使用IP代理以避免反爬虫机制

目录 前言 一、IP代理的使用 1. 什么是IP代理&#xff1f; 2. 如何获取IP代理&#xff1f; 3. 如何使用IP代理&#xff1f; 4. 如何避免IP代理失效&#xff1f; 5. 代理IP的匿名性 二、代码示例 总结 前言 在进行爬虫时&#xff0c;我们很容易会遇到反爬虫机制。网站…

不同对话分支的生成展示

第一个分支 第二个分支 生成过程 苏州有几个区 curl -H content-type: application/json -H Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTk1OTM5MzYsInVzZXJfaWQiOiI2In0.MkYG3nBcR-ROHvARpEfnWiw-Jsplap73qEeDn-L7v8I -d {"model"…

Flutter利用GridView创建网格布局实现优美布局

文章目录 简介使用详解导入依赖项创建一个基本的 GridView一些参数说明使用GridView.count来构造 其他控制总结 简介 GridView 是 Flutter 中用于创建网格布局的强大小部件。它允许你在行和列中排列子小部件&#xff0c;非常适合显示大量项目&#xff0c;例如图像、文本、卡片…

LiveMedia支持海康大华GB28181语音对讲需要的设备及服务准备

1、背景 GB28181支持国标协议的设备&#xff0c;通过GB28181注册接入到国标视频平台后。视频平台在某些情况下需要喊话摄像头&#xff0c;LiveMedia视频监控平台支持这样的国标设备语音对讲。就是可以从控制中心和您关注的设备间&#xff0c;进行语音对讲。 2、准备 2.1、准…

3D打印服务展示预约小程序的效果如何

3D打印服务的需求度非常高&#xff0c;同时还有加工、设计等&#xff0c;很多情况下商家需要推广获客及信息展示&#xff0c;而客户也需要多渠道寻找服务订购或咨询等。而在实际经营&#xff0c;3D打印服务商家也面临多个痛点&#xff1a; 1、品牌宣传拓客难 印刷包装行业除了…

用CHAT写APP的权限需求

今天我们来接触一个关于程序的问题&#xff0c;探索更多知识点 问CHAT&#xff1a;一个nuiapp开发的前端app&#xff0c;一般用户安装的时候&#xff0c;都有什么权限可以获取&#xff1f;有什么权限是牵扯隐私的&#xff1f; NUIApp&#xff08;Native User Interface App&am…

TikTok与老年用户:社交媒体的跨代交流

在数字时代&#xff0c;社交媒体已成为人们沟通、分享和互动的主要平台。然而&#xff0c;社交媒体不再仅仅局限于年轻一代&#xff0c;老年用户也逐渐加入其中。 其中&#xff0c;TikTok是一个引领潮流的短视频社交媒体应用&#xff0c;正在吸引越来越多的老年用户。本文将探…