vue学习笔记 九、父子组件实例-基本结构
|
系列导航 |
||
|---|---|---|
一、样例效果图:

父组件:Home 由三个子组件组成分别是:navHeader、navMain、navFooter
要完成的功能说明:
navHeader组件:输入新的任务,点击回车如果新的任务navMain中没有则添加到navMain中。
navMain组件:展示任务,点击“删除按钮”则删除当前任务,多选框可以多选任务。
navFooter组件:记录任务完成的数量(多选框选中为完成)、总数,以及点击“清除已完成”按钮删除navHeader中的已完成任务。
注:本实例先把框架搭建出来,后面会逐步完成描述的功能。
二、项目结构截图

三、代码
Home.vue
<template>
<div>
<nav-header></nav-header>
<nav-main></nav-main>
<nav-footer></nav-footer>
</div>
</template> <script>
//编写js内容
import NavHeader from '@/components/navHeader/NavHeader.vue'
import NavMain from '@/components/navMain/NavMain.vue'
import NavFooter from '@/components/navFooter/NavFooter.vue'
import {defineComponent} from 'vue' export default defineComponent({
name:'Home',
components:{
NavHeader,
NavMain,
NavFooter
},
setup(){ }
}) </script> <style scoped lang="scss">
</style>
NavFooter.vue
<template>
<div >
<div>已完成{{isComplete}} /全部{{all}}</div>
<div v-if="isComplete >0" class="btn">
<button @click="clear">清除已完成</button>
</div>
</div>
</template> <script>
import {defineComponent,ref} from 'vue'
export default defineComponent({
name:'navFooter',
setup(){
let isComplete = ref(1)
let all =ref(3) let clear = ()=>{
console.log('clear')
} return{
isComplete,
all,
clear
}
} }) </script> <style scoped lang="scss"> </style>
NavHeader.vue
<template>
<div>
<input
placeholder="请输入任务名称"
v-model="value"
@keydown.enter="enter"
/>
</div>
</template> <script>
import {defineComponent,ref} from 'vue'
export default defineComponent({
name:'navHeader',
setup(){
let value=ref('')
//按回车确认
let enter = () => {
console.log(value.value)
}
return{
value,
enter
}
}
}) </script> <style scoped lang="scss">
input{
margin-bottom: 10px;
}
</style>
NavMain.vue
<template>
<div v-for="(item,index) in list" :key ="index">
<div >
<input type="checkbox" v-model="item.complete"/>
{{item.title}}
<button @click="del(item,index)">删除</button>
</div>
</div>
</template> <script>
import {defineComponent,ref} from 'vue'
export default defineComponent({
name:'navMain',
setup(){
let list =ref([
{
title:'吃饭',
complete:false
},{
title:'睡觉',
complete:false
},{
title:'敲代码',
complete:false
}, ]) //删除任务
let del =(item,index)=>{
console.log(item)
console.log(index)
} return{
list,
del
} }
}) </script> <style scoped lang="scss"> </style>
vue学习笔记 九、父子组件实例-基本结构的更多相关文章
- vue学习笔记(九)vue-cli中的组件通信
前言 在上一篇博客vue学习笔记(八)组件校验&通信中,我们学会了vue中组件的校验和父组件向子组件传递信息以及子组件通知父组件(父子组件通信),上一篇博客也提到那是对组件内容的刚刚开始,而本 ...
- 【Vue项目笔记】—— 父子组件之间传递参数和子组件执行父组件中的方法
父组件(MyBlog.vue) <template> <!-- Delete Modal --> <!-- 注意:这里的@deleteBlog中的deleteBlog要和 ...
- Vue学习笔记九:列表案例
目录 前言 Bootstrap插件下载 Bootstrap表格和面板 增加数据,v-model和v-on 删除数据,事件修饰符和找索引的两种方法 查询数据,foreach和filter 全部的HTML ...
- vue学习笔记(十)路由
前言 在上一篇博客vue学习笔记(九)vue-cli中的组件通信内容中,我们学习组件通信的相关内容和进行了一些组件通信的小练习,相信大家已经掌握了vue-cli中的组件通信,而本篇博客将会带你更上一层 ...
- Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...
- vue学习笔记(八)组件校验&通信
前言 在上一章博客的内容中vue学习笔记(七)组件我们初步的认识了组件,并学会了如何定义局部组件和全局组件,上一篇内容仅仅只是对组件一个简单的入门,并没有深入的了解组件当中的其它机制,本篇博客将会带大 ...
- Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发
===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- vue 学习笔记(二)
最近公司赶项目,一直也没时间看 vue,之前看下的都快忘得差不多了.哈哈哈,来一起回顾一下vue 学习笔记(一)后,继续向下看嘛. #表单输入绑定 基础用法 v-model 会忽略所有表单元素的 va ...
- vue学习笔记之:为何data是一个方法
vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定 ...
随机推荐
- crm系统功能有哪些?
CRM系统是指客户关系管理系统,其核心理念是将客户视为企业的宝贵资源,为了最大化地发掘和利用客户价值,运用各种先进的技术与方法来促进商业活动中所有涉及到客户的流程和业务,所以实际上CRM系统也是一个综 ...
- 聊聊kube-scheduler如何完成调度和调整调度权重
本文分享自华为云社区<kube-scheduler如何完成调度和调整调度权重>,作者: 可以交个朋友. 一.概述 Kube-scheduler作为k8s集群的默认调度器,它监听(watch ...
- 《HelloGitHub》第 93 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- vulnhub - Nagini - writeup
信息收集 基础信息 目标只开放了22和88: root@Lockly tmp/nagini » arp-scan -I eth1 -l Interface: eth1, type: EN10MB, M ...
- MySQL部署后配置
授权root用户登录 #仅本地登录,修改密码用 alter user root@'localhost' identified with mysql_native_password by'******* ...
- Kotlin委托属性(1)
在Kotlin中,委托属性(Delegated Properties)是一种强大的语言特性,允许你将属性的 getter 和 setter 方法的实现委托给其他对象.这使得你能够通过委托来重用代码.将 ...
- SpringBoot结合ajax实现登录功能
1:ajax是什么(https://www.w3school.com.cn/ajax/ajax_intro.asp)? AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJA ...
- P7112 【模板】行列式求值
学<高等代数>第二章的时候过来搜了搜模板,结果真搜到了.于是水一篇题解. 本文部分内容来自<高等代数>. 行列式定义 对于一个 \(n\) 阶行列式 \[A_{n \times ...
- linux安装redis、ununtu和centos等类似的发行版安装redis,完全离线安装reids,自定义版本redis
redis各个版本源码包下载:Index of /releases/ (redis.io) 下载与解压 从Index of /releases/ (redis.io)选择自己需要的版本并下载(此处以r ...
- 文心一言 VS 讯飞星火 VS chatgpt (32)-- 算法导论5.2 4题
四.利用指示器随机变量来解如下的帽子核对问题(hat-heck problem):n位顾客,他们每个人给餐厅核对帽子的服务生一顶帽子.服务生以随机顺序将帽子归还给顾客.请问拿到自己帽子的客户的期望数是 ...