前端vue入门(纯代码)10

news2024/10/7 20:32:08

10.TodoList-自定义事件

TodoList案例的完整代码请点击此处粉色文字

  • TodoList案例中的子组件TodoHeader给父组件App传递数据

在这里插入图片描述

  • App.vue文件中需要修改的代码

    • 原本 Todo案例中子给父传递数据【通信】的方法:props
    <!-- 把App组件里的方法addTodo()传给TodoHeader组件【也需要用props去接受】 -->
    <TodoHeader :addTodo="addTodo"/>
    <TodoFooter
            :todos="todos"
            :checkAllTodo="checkAllTodo"
            :clearAllTodo="clearAllTodo"
            />
    
    • 修改后: 子给父传递数据【通信】的方法:利用自定事件 【addTodo,checkAllTodo,clearAllTodo】去通信
    <TodoHeader @addTodo="addTodo"/>
    <TodoFooter
            :todos="todos"
            @checkAllTodo="checkAllTodo"
            @clearAllTodo="clearAllTodo"
            />
    
  • TodoHeader.vue文件中需要修改的代码

    • 原本 Todo案例中子给父传递数据【通信】的方法:props
    <input type="text" placeholder="请输入你的任务名称,按回车键确认" @keyup.enter="add" v-model="title"/>
    
      //接收从App组件【父组件】传递过来的addTodo方法
      props:['addTodo'], 
      methods: {
        add(){
          // 如果输入框里为空,就跳过下面的代码,并弹窗
          if (!this.title.trim()) return alert('请输入值')
          //将用户的输入包装成一个todo对象
          const todoObj={id:nanoid(),title:this.title,done:false}
          //通知App组件去添加一个todo对象
          this.addTodo(todoObj)
          //清空输入
          this.title = ''
        }
      },
    
    • 修改后: 子给父传递数据【通信】的方法:利用自定事件 【addTodo】去通信
    <input type="text" placeholder="请输入你的任务名称,按回车键确认" @keyup.enter="add" v-model="title"/>
    
      //不需要接收从App组件【父组件】传递过来的addTodo方法
      //props:['addTodo'], 
      methods: {
        add(){
          // 如果输入框里为空,就跳过下面的代码,并弹窗
          if (!this.title.trim()) return alert('请输入值')
          //将用户的输入包装成一个todo对象
          const todoObj={id:nanoid(),title:this.title,done:false}
          //通知App组件去添加一个todo对象
          
          //触发自定义事件addTodo,并把子组件中的参数todoObj传给父组件
          this.$emit('addTodo',todoObj)
          //清空输入
          this.title = ''
        }
      },
    

    在这里插入图片描述

  • TodoFooter.vue文件中需要修改的代码

    • 原本 Todo案例中子给父传递数据【通信】的方法:props
    <template>
    	<div class="todo-footer" v-show="total">
    		<label>
    			<input type="checkbox" v-model="isAll"/>
    		</label>
    		<span>
    			<span>已完成{{ doneTotal }}</span> / 全部{{ total }}
    		</span>
    		<button class="btn btn-danger" @click="clearAllDone">清除已完成任务</button>
    	</div>
    </template>
    
    <script>
    export default {
      name: 'TodoFooter',
      props: ['todos','checkAllTodo','clearAllTodo'],
      //如果是自定义事件的话,就需要把该删掉的东西【'checkAllTodo','clearAllTodo'】删掉  
      // props: ['todos'],
      computed:{
        //总数
        total(){
          return this.todos.length
        },
        // 已完成数
        doneTotal(){
          return this.todos.reduce((pre,todo)=>pre + (todo.done ? 1 : 0),0)
        },
        //控制全选框
        isAll:{
          //get有什么作用?当有人读取isAll时,get就会被调用,且返回值就作为isAll的值
    			//get什么时候调用?1.初次读取isAll时。2.所依赖的数据发生变化时。
          get(){
            //全选框是否勾选  【&&:且】
            return this.total === this.doneTotal && this.total>0
          },
          //set什么时候调用? 当isAll被修改时。
          // value就是:v-model绑定的值false【未勾选】 or true【勾选】
          set(value){
            console.log(value)
            this.checkAllTodo(value)
          }
        },
      },
      methods: {
        // 清空所有已完成
        clearAllDone(){
          this.clearAllTodo()
        }
      },
    };
    </script>
    
    • 修改后: 子给父传递数据【通信】的方法:利用自定事件 【checkAllTodo,clearAllTodo】去通信
    isAll:{
          //get有什么作用?当有人读取isAll时,get就会被调用,且返回值就作为isAll的值
    			//get什么时候调用?1.初次读取isAll时。2.所依赖的数据发生变化时。
          get(){
            //全选框是否勾选  【&&:且】
            return this.total === this.doneTotal && this.total>0
          },
          //set什么时候调用? 当isAll被修改时。
          // value就是:v-model绑定的值false【未勾选】 or true【勾选】
          set(value){
            console.log(value)
            this.$emit('checkAllTodo',value)
          }
        },  
    
        // 清空所有已完成
        clearAllDone(){
          // this.clearAllTodo()
          this.$emit('clearAllTodo')
        }
    

    在这里插入图片描述

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

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

相关文章

2023 Nature 健康系统规模的语言模型是通用预测引擎

文章目录 一、论文关键信息二、论文主要内容三、总结与讨论🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题:Health system-scale language models are all-purpose prediction engines 期刊信息:2023 Nature 论文地址:h

Armbian 23.05(代号Suni)操作系统已全面上市

Armbian社区通知我们&#xff0c;适用于ARM和RISC-V单板计算机以及其他平台的Armbian 23.05&#xff08;代号Suni&#xff09;操作系统已全面上市。 在Armbian 23.02发布三个月后&#xff0c;Armbian 23.05版本是第一个在完全重构的构建框架上创建的版本&#xff0c;基于即将发…

Flink 学习八 Flink 容错机制 checkpoint savepoint

Flink 学习八 Flink 容错机制 & checkpoint & savepoint https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/concepts/stateful-stream-processing/ 1.容错基础概念 上一节讲述状态后端;Flink是一个 带状态stateful 的数据处理系统,在处理数据的过程…

基于深度学习的高精度蜜蜂检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度蜜蜂检测识别系统可用于日常生活中或野外来检测与定位蜜蜂目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的蜜蜂目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

VUE 2X ClassStyle ⑦

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs C l a s s Class Class与 S t y l e Style Style绑定总结 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持…

初始java String类型

文章目录 初始java String类型理解 next和nextLine的区别new String(); 括号里面可以放什么呢放byte类型的数组放byte类型的数组&#xff0c;索引&#xff0c;长度放char类型的数组放char类型的数组&#xff0c;索引&#xff0c;长度 String 类型对应同一字符串&#xff0c;是否…

boost 异步服务器开发

目录 1、 异步服务器简介 2、异步服务器开发 2.1 会话类 2.1.1 会话类头文件 2.1.2 会话类源文件 2.2 服务类 2.2.1 服务类头文件 2.2.2 服务类源文件 2.3 主函数 3、异步服务器测试 4、当前异步服务器存在的问题及后续优化 1、 异步服务器简介 boost 异步服务器分为…

【Pytest实战】Pytest 如何生成优美的测试报告(allure-pytest)

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想…

施耐德电气:以数字化利器,助力中国产业“双转型”

近日&#xff0c;以“创新融生态&#xff0c;加速双转型”为主题的2023施耐德电气创新峰会在乌镇圆满举行。大会上&#xff0c;数千位行业专家、业界领袖和专业人士共聚一堂&#xff0c;共同探讨中国产业如何迈向“数字化”和“绿色低碳”的双转型&#xff0c;旨在为中国产业的…

SpringBoot构造流程源码分析------阶段一

SpringApplication的初始化简介 在入口类主要通过SpringApplication的静态方法–run方法进行SpringApplication类的实例化操作&#xff0c;然后再针对实例化对象调用另一个run方法完成整个项目的初始化和启动。本章节重点围绕此过程的前半部分&#xff08;即SpringApplication…

嵌入式系统开发复习指北

【嵌入式系统】20计科3-4班 第1讲 文件IO操作测试 【嵌入式系统】20计科3-4班 第2讲第4讲进程控制与线程测试 【嵌入式系统】20计科3-4班 第3讲进程通信测试 【嵌入式系统】20计科3-4班 第5-6讲内核和BootLoader开发测试 【嵌入式系统】20计科3-4班 第7讲驱动程序开发测试 大题…

PCB设计系列分享-高速ADC布局布线技巧

目录 概要 整体架构流程 技术名词解释 技术细节 1.裸露焊盘 2.最佳连接 3.去耦和层电容 4.PDS的高频层电容 5.分离接地 小结 概要 在当今的工业领域&#xff0c;系统电路板布局已成为设计本身的一个组成部分。因此&#xff0c;设计工程师必须了解影响高速信号链设计性能的机制。…

【操作系统】期末复习汇总最全版本!电子科技大学2023期末考试

操作系统 【考后感悟】本次考试考察了&#xff1a;操作系统的4大特征、线程和进程的区别、页表与页的基本地址变换机构、磁盘调度算法、银行家算法、调度算法&#xff08;短作业优先、时间片轮转&#xff09;、Linux的一些基本知识、shell读程序题以及PV操作编程。知识点基本涵…

目标检测经典工作发展(超详细对比):R-CNN vs SPPNet vs Fast R-CNN vs Faster R-CNN

序 网上关于两阶段目标检测&#xff08;two-stage object detection&#xff09;的几个经典工作R-CNN&#xff0c;SPPNet&#xff0c;Fast R-CNN&#xff0c;Faster R-CNN的发展&#xff0c;各自的优缺点缺乏一个比较清楚的描述&#xff0c;大部分文章讲的比较细节&#xff0c…

代码随想录算法训练营第四十一天| 背包问题

标准背包问题 有n件物品和一个最多能背重量为w 的背包。 第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 举一个例子&#xff1a; 背包最大重量为4。 物品为&#xff1a; 重量价…

c++之qt学习 基本介绍 界面设计 串口

这里写目录标题 qt基类介绍qt不同版本qt下载打开qt creater制作简单qt界面ui界面点击forms&#xff0c;双击ui文件&#xff0c;就可以进入ui编辑器 qt信号和槽给界面增加图片界面布局布局不会影响代码 界面切换更改代码验证账号密码 qt的三驾马车串口助手为下拉框加入属性信息串…

力扣动态规划专题(四)劫舍问题与股票问题 打家劫舍Ⅰ Ⅱ Ⅲ 买卖股票最佳时机Ⅰ Ⅱ Ⅲ IV 步骤及C++实现

文章目录 198. 打家劫舍213. 打家劫舍 II337. 打家劫舍 III121. 买卖股票的最佳时机动态规划贪心算法 122. 买卖股票的最佳时机 II动态规划贪心算法 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费 198. 打家劫…

为摸鱼助力:一份Vue3的生成式ElementPlus表单组件

目录 一、实现背景 二、简介 三、组织架构设计 四、实现方式 五、代码示例 六、示例代码效果预览 七、项目预览地址 & 项目源码地址 目前项目还有诸多待完善的地方&#xff0c;大家有好的想法、建议、意见等欢迎再次评论&#xff0c;或于github提交Issues 一、实现…

杭州市等级保护测评机构名录-2023年

等级保护测评机构并不是一成不变的&#xff0c;因为有年审不符合条件被撤销的&#xff0c;也有符合条件新增的&#xff0c;所以需要不定时查看的。这里小编就给大家汇总了2023年杭州市等级保护测评机构名录。 杭州市等级保护测评机构名录-2023年 序号&#xff1a;1 机构名称…

开源SCRM营销平台MarketGo-营销通道

一、概述 互联网逐步由蓝海市场往红海市场走&#xff0c;互联网增量的红利基本到顶了。营销层面过去要获取新用户&#xff0c;现在需要考虑用户的留存、活跃、复购等&#xff0c;重心从拉新向留存用户的精细化运营转移&#xff1b;当人口红利慢慢消失&#xff0c;成本也在逐渐…