vue 组件封装 综合案例1

news2024/11/17 5:44:17

vue 组件封装 综合案例

在这里插入图片描述
**创建 工程:
H:\java_work\java_springboot\vue_study
ctrl按住不放 右键 悬着 powershell

H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day05\准备代码\11-综合案例-商品列表

vue --version
vue create v-fengzhuang-example-demo
cd v-fengzhuang-example-demo
npm install --save-dev less-loader less
npm run serve

main.js

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

Vue.config.productionTip = false


//封装全局指令 focus
Vue.directive('focus', {

  // 指令所在的dom元素,被插入到页面中时触发
  inserted(el) {
    el.focus();
  }
})

new Vue({
  render: h => h(App),
}).$mount('#app')

App.vue

<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>
          <td>1</td>
          <td>梨皮朱泥三绝清代小品壶经典款紫砂壶</td>
          <td>
            <img
              src="https://yanxuan-item.nosdn.127.net/f8c37ffa41ab1eb84bff499e1f6acfc7.jpg"
            />
          </td>
          <td>
            <!-- 标签组件 -->
            <MyTag v-model="tempText"></MyTag>
          </td>
        </tr>
        <tr>
          <td>1</td>
          <td>梨皮朱泥三绝清代小品壶经典款紫砂壶</td>
          <td>
            <img
              src="https://yanxuan-item.nosdn.127.net/221317c85274a188174352474b859d7b.jpg"
            />
          </td>
          <td>
            <!-- 标签组件 -->
            <MyTag v-model="tempText2"></MyTag>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
import MyTag from "./components/MyTag.vue";
export default {
  name: "TableCase",
  components: { MyTag },
  data() {
    return {
      tempText: "水杯",
      tempText2: "篮球",
      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>

MyTag.vue

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

<script>
export default {
  data() {
    return {
      isEdit: false,
    };
  },
  props: {
    value: String,
  },

  methods: {
    handleClick() {
      this.isEdit = true;

      // this.$nextTick(() => {
      //   this.$refs.inp.focus();
      // });
    },
    handleEnter(e) {
      if (e.target.value.trim() === "") return alert("标签内容不能为空");
      console.log("回车了");
      console.log(e.target.value);
      this.$emit("input", e.target.value);
      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>

修改后:
:src是 v-bind:src的简写方式获取data数据函数中的值

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

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

相关文章

2023年中国游戏机设备分类、销量及市场规模分析[图]

游戏机设备行业是指生产和销售游戏机设备的行业&#xff0c;包括游戏机硬件、游戏软件、游戏周边设备等。随着科技的进步和游戏市场的不断扩大&#xff0c;游戏机设备行业也在不断发展和和创新。 游戏机设备分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#xff…

关于setInteval定时器在不同浏览器下表现差异

背景: 项目下用到websocket, 中间使用了setInterval 定时向服务端发送心跳包, 5s/次, 观察正常, 就将浏览器最小化后, 经过了两天, 周一过来查看, 咋才 5000次; 问题分析: 遇到这种简单的问题当然是请教一下GPT 来的最快最实际, 不出所料, 马上得到证实; chrome 88 版本之…

CentOS7.9离线安装 Nginx

1. 下载Nginx安装包 下载地址&#xff1a;http://nginx.org/download/nginx-1.20.1.tar.gzhttp://nginx.org/download/nginx-1.20.1.tar.gz 2. 找到Nginx安装时需要的依赖包 我这里是下载了CentOS7.9的安装镜像 阿里下载地址&#xff1a;centos-7.9.2009-isos-x86_64安装包…

大白话聊AVL树

文章目录 前言AVL树的平衡性不平衡的几种情况AVL树恢复平衡LL恢复平衡RR恢复平衡LR恢复平衡RL恢复平衡 总结 前言 上文对常见的数据结构进行了简单介绍&#xff0c;包括它们的定义、性质和特点。本文将对AVL树展开介绍&#xff0c;通过对AVL树的插入、删除、查找以及旋转操作全…

CleanMyMac X4.14.4最新免费版本功能介绍

最新版CleanMyMac X 让您的Mac焕然一新&#xff0c;时刻保持安全&#xff01;CleanMyMac X是一款专业的Mac清理软件&#xff0c;可智能清理mac磁盘垃圾和多余语言安装包&#xff0c;快速释放电脑内存&#xff0c;轻松管理和升级Mac上的应用。同时CleanMyMac X可以强力卸载恶意软…

力扣第332题 重新安排行程 c++ 难

题目 332. 重新安排行程 困难 相关标签 深度优先搜索 图 欧回路 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机…

通达信神奇九转指标原理及选股公式,无未来函数,数字不消失

神奇九转指标的原理源自技术分析师汤姆迪马克(Tom Demark)发明的TD序列&#xff0c;用于识别趋势衰竭和价格反转的时间。神奇九转指标是一种震荡指标&#xff0c;目的在于解决一些技术分析指标在趋势行情中有利可图&#xff0c;但在震荡行情中表现很差的问题。 一、神奇九转指标…

算法通关村第19关【白银】| 动态规划高频问题

1.零钱兑换 思路&#xff1a; 确定dp&#xff1a;这里是最少硬币的个数&#xff0c;不是种类 确定递推公式&#xff1a;dp[j] Math.min(dp[j],dp[j-coins[i]]1),不要当前硬币dp[j]还是保持以前的组合方法,要当前硬币dp[j-coins[i]]1 确定初始化&#xff1a;dp[0]0,其他的都…

NFT Insider112:The Sandbox聘请Apple高管担任其首席内容官,YGG 将在菲律宾举办Web3游戏峰会

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

华为eNSP配置专题-浮动路由及BFD的配置

文章目录 华为eNSP配置专题-浮动路由及BFD的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接2.2、基本终端配置 3、浮动路由配置3.1、浮动路由的基本配置3.2、浮动路由的负载均衡问题3.3、浮动路由的优先级调整 4、BFD的配置4.1…

YOLOv8改进实战 | 更换主干网络Backbone(四)之轻量化模型MobileNetV3

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

利用 Pytest Cache Fixture 实现测试结果缓存

前言 接口自动关过程中&#xff0c;经常会遇到这样一些场景&#xff0c;"请求2需要用到请求1响应的数据"&#xff0c;常见的做法&#xff0c;进行用例依赖或者将请求1的响应结果写入一个文件&#xff0c;用到的时候读取文件。当然这都不是这篇文章的重点&#xff0c…

Redis性能滑坡:哈希表碰撞的不速之客【redis第二部分】

Redis性能滑坡&#xff1a;哈希表碰撞的不速之客 前言第一部分&#xff1a;Redis哈希表简介第二部分&#xff1a;哈希表冲突原因第三部分&#xff1a;Redis哈希函数第四部分&#xff1a;哈希表冲突的性能影响第五部分&#xff1a;解决冲突策略第六部分&#xff1a;redis是如何解…

nginx常见报错及解决acme.sh给Nginx配置SSL证书

问题排查&#xff1a; nginx -t //检查配置是否正确只要返回ok就说明配置没问题。 Nginx报错Failed to restart nginx.service: Unit not found 解决方法&#xff1a; 1、在根目录下执行 vim /etc/init.d/nginx2、插入以下代码 #!/bin/sh # nginx - this script starts …

Python rich库

1. 安装 pip install rich Collecting richDownloading rich-13.6.0-py3-none-any.whl.metadata (18 kB) Collecting markdown-it-py>2.2.0 (from rich)Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB) Collecting pygments<3.0.0,>2.13.0 (f…

1024程序员节,给大家送份福利

各位“爱码士”们 一年一度的1024程序员节就要到了 提前祝程序猿/媛们节日快乐 除了祝福&#xff0c;肯定少不了福利啦&#xff5e; 废话不多说&#xff0c;直接上福利 知了堂1024加油包 用心成就你的IT梦想 价值9800的程序员助梦加油包 仅需1.24元 内含1024元助学金 …

Sui成为DeFi增长的首选平台

Sui网络在过去的三个月内DeFi活动增长迅速&#xff0c;其中TVL增长了341&#xff05;&#xff0c;交易量增长了229&#xff05;。这一增长对于Sui来说是一个重要的里程碑&#xff0c;它展示了Sui为其DeFi生态中的第三方开发者提供的实用性&#xff0c;以及他们支持数百万用户进…

element-ui 以CDN 方式引入原生js开发的几个别坑 (+vue)

element-ui 以CDN 方式引入原生js开发的几个坑 最近两个月太忙了 忙的没空写文章 两个月赶出来了几个的项目 一个是雪佛兰裸眼3D的一个商品屏幕展示项目 一个是广汽云渲染的一个云看车项目 一个是奥迪中国充电桩的网页开发项目&#xff0c; 奥迪中国做个饭也是目前正在做的 不…

Linux系统编程04

进程的概念 进程&#xff08;动态&#xff09;是一个正在运行的程序&#xff08;静态&#xff09; 多道程序设计缺点&#xff1a; &#xff08;1&#xff09;缺乏隔离&#xff0c;各个程序之间可以直接访问&#xff0c;使用对方的数据 &#xff08;2&#xff09;内存使用率低&a…

正点原子嵌入式linux驱动开发——LED驱动开发

在上一篇笔记中&#xff0c;详细的讲解了字符设备驱动开发步骤&#xff0c;并且用一个虚拟的chrdevbase设备为例完成了第一个字符设备驱动的开发。本章就开始编写第一个真正的Linux字符设备驱动。在正点原子STM32MP157开发板上有一个LED灯&#xff0c;本章就学习一下如何编写Li…