好家伙,

1,为组件封装属性,

需要封装以下属性:

需要定义的属性 属性名 值的类型

商品名  

title String
商品图片 pic String
商品价格 price Number
是否勾选 state Boolean

 

 

 

 

 

 

 

 

 

通过props为属性传值

 

上代码:

Goods.vue组件:

  1. <template>
  2. <div class="goods-container">
  3. <!-- 左侧图片 -->
  4. <div class="thumb">
  5. <div class="custom-control custom-checkbox">
  6. <!-- 复选框 -->
  7. <input type="checkbox" class="custom-control-input" id="cb1" :checked="state" />
  8. <label class="custom-control-label" for="cb1">
  9. <!-- 商品的缩略图 -->
  10. <img :src="pic" alt="" />
  11. <img src="../../assets/1.jpg" alt="">
  12.  
  13. </label>
  14. </div>
  15. </div>
  16. <!-- 右侧信息区域 -->
  17. <div class="goods-info">
  18. <!-- 商品标题 -->
  19. <h6 class="goods-title">我的名字是:{{ title }}</h6>
  20. <div class="goods-info-bottom">
  21. <!-- 商品价格 -->
  22. <span class="goods-price">{{ price }}¥</span>
  23. <!-- 商品的数量 -->
  24. </div>
  25. </div>
  26. </div>
  27. </template>
  28.  
  29. <script>
  30. export default {
  31. props:{
  32. //商品名字
  33. title:{
  34. default:'',
  35. type:String
  36. },
  37. //商品图片
  38. pic:{
  39. default:'',
  40. type:String
  41. },
  42. //商品价格
  43. price:{
  44. default:0,
  45. type:Number
  46. },
  47. //商品的勾选状态
  48. state:{
  49. default:false,
  50. //是否勾选,所以是布尔值类型
  51. type:Boolean
  52. }
  53. }
  54. }
  55. </script>

这里我们用一个插值表达式{{}}去拿到props中的值并把它渲染出来

 

来到App.vue这边

App.vue完整代码

主要来看其中的组件调用部分

  1. <Goods v-for="item in list"
  2. :key="item.id"
  3. :title="item.goods_name"
  4. :pic="item.goods_img"
  5. :price="item.goods_price"
  6. :state="item.goods_stats"></Goods>

看看效果:

 

 图片那块出了点bug

 

2.如何修改商品的勾选状态:

这里涉及到父子传值了

1.在子组件中,要监听复选框 状态变化的事件。拿到最新的勾选状态<input type="checkbox"@change="stateChange"/>

只要复选框的勾选状态发生了变化,会自动触发 change事件!

 

2.当监听到勾选状态变化之后,应该立即把最新的状态,通过自定义事件的形式,发送给父组件。

this.$emit('state-change', { id,value})

其中,id表示当前这件商品的id,value的值是最新的勾选状态

上代码:

App.vue中添加代码

  1. <Goods v-for="item in list"
  2. :key="item.id"
  3. :id="item.id"
  4. :title="item.goods_name"
  5. :pic="item.goods_img"
  6. :price="item.goods_price"
  7. :state="item.goods_stats"
  8. @state-change="getNewState"></Goods>

添加方法自定义方法:

  1. methods:{
  2. //封装请求列表数据的方法
  3. //接受子组件传递过来的数据
  4. //e的格式为{id,value}
  5. getNewState(val){
  6. console.log('父组件成功接受值')
  7. this.list.some(item=>{
  8. item.goods_state=e.value
  9. //终止后续的循环
  10. return true
  11. })
  12. }
  13. },

Good.vue中添加代码

为复选框绑定方法:

  1. <input type="checkbox"
  2. class="custom-control-input"
  3. id="cb1"
  4. :checked="state"
  5. @change="stateChange"/>

@change当input

添加自定义方法:

e.target.checked是勾选框的状态(true或false)

  1. methods:{
  2. stateChange(e){
  3. const newState = e.target.checked
  4. //触发自定义事件
  5. this.$emit('state-change',{id:this.id,value:newState})
  6. }
  7. }

但是依旧有bug,比如点了第三个,第一个的勾选被取消了

我们绑个id来解决这个问题

Goods.vue中

  1. <div class="custom-control custom-checkbox">
  2. <!-- 复选框 -->
  3. <input type="checkbox"
  4. class="custom-control-input"
  5.  
  6. //原先为id="cb"
  7. :id="'cb'+id"
  8. :checked="state"
  9. @change="stateChange"/>
  10.  
  11. //原先为for="cb"
  12. <label class="custom-control-label" :for="'cb'+id">
  13. <!-- 商品的缩略图 -->
  14. <img :src="pic" alt="" />
  15. <img src="../../assets/1.jpg" alt="">
  16.  
  17. </label>
  18. </div>

搞定!

我得想想图片的bug怎么处理,

第八十一篇:Vue购物车(二) 名称,图片,价格的渲染的更多相关文章

  1. 第十一篇:vue.js监听属性(大作业进行时)

    这个知识点急着用所以就跳过<计算属性>先学了 首先理解一下什么是监听:对事件进行监控,也就是当我进行操作(按了按钮之类的事件)时,会有相应的事情发生 上代码 <div id = &q ...

  2. Python学习二十八周(vue.js)

    一.指令 1.一个例子简单实用vue: 下载vue.js(这里实用1.0.21版本) 编写html代码: <!DOCTYPE html> <html lang="en&qu ...

  3. {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器

    Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...

  4. 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)

    1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些t ...

  5. Spring Cloud第十一篇 | 分布式配置中心高可用

    ​ 本文是Spring Cloud专栏的第十一篇文章,了解前十篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...

  6. Python开发【第二十一篇】:Web框架之Django【基础】

    Python开发[第二十一篇]:Web框架之Django[基础]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...

  7. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  8. day 82 Vue学习二之vue结合项目简单使用、this指向问题

    Vue学习二之vue结合项目简单使用.this指向问题   本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...

  9. 孤荷凌寒自学python第八十一天学习爬取图片1

    孤荷凌寒自学python第八十一天学习爬取图片1 (完整学习过程屏幕记录视频地址在文末) 通过前面十天的学习,我已经基本了解了通过requests模块来与网站服务器进行交互的方法,也知道了Beauti ...

随机推荐

  1. 关于vue cli 使用iview 自定义主题遇到的坑

    定制主题,这里讲变量覆盖 当你老老实实的把上面文档中的代码一一复制粘贴到项目文件中时,发现了还没装less,所以你就 npm install less –savenpm install less-lo ...

  2. SAP -SE30 程序运行时间分析

    运行SE30 选中Program,点击Excute 点击运行 分析结果

  3. 2022giao考游记

    Day -12: 今年高考准备去考着玩玩,考前心态十分稳健.~~毕竟我才高一/cy~~ 这次高考我倒是没啥目标,主要是来试试水,感受一下高考的氛围,体会一下自己和高三应届生们的水平的差距.也算是丰富自 ...

  4. centos 7搭建svn+apache及权限控制

    SVN服务器运行模式: 模式1:svn服务器单独运行 监听: 3690端口 访问: svn://IP 模式2: svn 服务器+ apache : 80 端口 访问: http://IP 1. #安装 ...

  5. 自定义监控lvs

    1. 修改zabbix_agent配置文件添加以下内容,重启agent Include=/etc/zabbix/zabbix_agentd.d/ 2. 在zabbix安装目录下的scripts目录下添 ...

  6. 记一次 .NET 差旅管理后台 CPU 爆高分析

    一:背景 1. 讲故事 前段时间有位朋友在微信上找到我,说他的 web 系统 cpu 运行一段时候后就爆高了,让我帮忙看一下是怎么回事,那就看吧,声明一下,我看 dump 是免费的,主要是锤炼自己技术 ...

  7. HelloWord程序代码的编写和HelloWord程序的编译运行

    1.新建文件夹,存放代码 2.新建一个Java文件 文件后缀名.java(Hello.java) 3.编写代码public class Hello{public static void main(St ...

  8. SpringCloud Gateway微服务网关实战与源码分析-上

    概述 定义 Spring Cloud Gateway 官网地址 https://spring.io/projects/spring-cloud-gateway/ 最新版本3.1.3 Spring Cl ...

  9. SpringBoot之MongoDB附件操作

    前言 近期自己针对附件上传进一步学习,为了弥足项目中文件上传的漏洞,保证文件上传功能的健壮性和可用性,现在我将自己在这一块的心得总结如下: 一.pom.xml依赖的引入 <dependency& ...

  10. go grpc: connection reset by peer 的一种解决方案

    最近添哥一直反映,他手下的设备以grpc stream的方式向我服务端发送数据.偶然会收到错误.现象如下: 连接已经建立了一段时间,正常使用. 突然client.Send 返回 eof. 客户端有报错 ...