Vue父子传值
昨天创建完项目以后,今日首先使用项目来做一个简单的导航栏体会一下Vue的使用
1.项目的结构:

2.首先在Vheader.Vue中编辑代码:
<template>
<header class="header">
<div class="nav">
<div class="logo">
<img :src="imgSrc" alt="">
</div>
<div class="info">
<button>登录</button>
<button>注册</button>
</div>
</div>
</header>
</template> <script>
import imgSrc from "../assets/logo.png"
export default {
name: 'Vheader',
data() {
return {
imgSrc:imgSrc,
}
}
}
</script> <style scoped>
.header {
width: 100%;
height: 70px;
background-color: #fff;
box-shadow: 0 2px 4px 0 #c9c9c9;
}
.header .nav{
width: 980px;
height: 40px;
margin: 0 auto;
/*float: left;*/
background-color: transparent;
}
.nav .logo{
width: 100px;
height: 40px;
float: left;
}
.logo img{
width: 40px;
height: 40px;
}
.nav .info{
float: right;
width: 200px;
height: 40px;
}
.info button{
width: 80px;
height: 40px;
float: left;
}
</style>
3.App.vue主文件进行调用组件:
<!-- 一个组件由三部分组成 -->
<template>
<!-- 页面的结构 -->
<div class="app">
<Vheader class="header"> </Vheader>
<Vcontent></Vcontent>
<Vfooter></Vfooter> <h3>{{currentMsg}}</h3>
<img :src="imgSrc" alt=""> <ul>
<li v-for="item in getArray">
<a href="javascript">{{item}}</a>
</li>
</ul>
<button @click="clickHandler">修改</button> </div>
</template> <script>
//1.先引入组件
//file-loader
import imgSrc from './assets/logo.png'
import Vheader from './components/Vheader.vue'
import Vfooter from './components/Vcontent.vue'
import Vcontent from './components/Vfooter.vue'
//页面的业务逻辑
export default {
name: 'app',
data() { //data必须是一个函数
return { //必须return。
msg: "hello S9!",
starts: [
"邓超", "郑凯", "陈赫"
],
imgSrc: imgSrc, //将图片当成一个模块,引入成为对象。
}
},
methods: {
clickHandler() {
//这里跟msg紧密相关,一旦刷新页面会打印1,点击按钮msg发生
//了变化,那么这个1又打印1遍
console.log(1);
this.msg = "哈哈哈"
this.starts.push("baby")
} },
computed: {
currentMsg() {
return this.msg
},
getArray() {
return this.starts
} },
//2.挂载
components: {
Vheader: Vheader,
Vcontent: Vcontent,
Vfooter: Vfooter,
}
}
</script> <style scoped>
*{
padding: 0;
margin: 0;
}
</style>
最后就是整个流程的图。

下面就来说说怎么具体进行父子传值。
比如有这么一个场景,所有的数据肯定都是在app.vue中的,那么子组件怎么去拿到这个数据呢?

在app.vue这里有一个这个citys的数据,想要渲染在Vfooter中,怎么传过去呢?
<!--绑定自定义属性-->
<Vfooter :cityArray='citys' ></Vfooter>
然后切到Vfooter.vue中
<script>
export default {
name:'Vfooter',
data(){
return{ }
},
//父子传值利用props验证
props:{
cityArray:Array
}
}
</script>
首先对数据进行验证,然后在标签中渲染出来。
<template>
<footer>
<ul v-for='item in cityArray'>
{{item}}
</ul>
</footer>
</template>
到此数据传送完毕。
第二个就是父子触发事件的问题
比如在Vcontent中有一个button,点击button想要添加一个城市。如何去添加呢?
1.
在Vcontent.vue标签下绑定了点击事件。
<button @click="addCunHandler">添加村庄</button>
完了再下面的方法中写这个事件:
methods:{
addCunHandler(){
//触发自定义的事件
this.$emit('addZhuangHandler','通州' )
}
}
这里触发的自定制事件是添加村庄,需要触发app.vue中的事件,而且需要把点击传递的参数(也就是要添加的村庄)传入。
最后在app.vue中:
<!--自定义事件-->
<Vcontent v-on:addZhuangHandler="addHandler"></Vcontent>
子组件传过来触发了这个事件。
methods: {
clickHandler() {
//这里跟msg紧密相关,一旦刷新页面会打印1,点击按钮msg发生
//了变化,那么这个1又打印1遍
console.log(1);
this.msg = "哈哈哈";
this.starts.push("baby")
},
addHandler(str){
alert(str);
this.citys.push(str)
}
},
这个事件执行,弹框并且把传过来的值(通州)添加到这个数组中。
这个东西很重要!
总结一句话就是父级往子级传值 使用props
子级往父级传值 使用自定义事件 this.$emit()
Vue父子传值的更多相关文章
- 10.4 Vue 父子传值
简单示例 APP.vue <template> <div> <img :src="imgSrc"> <!-- 父子传值 --> &l ...
- day 100天 VUE 父子传值,单页面.
一 .静态资源导入方法 启动服务 npm run serve <template> <div id ="app"> <h3>{{msg}}& ...
- vue父子传值的具体应用
最近我负责的项目已经迭代到第四版了,我作为一个没啥经验的小菜鸟也成长了很多. 在这一版开发开始之前,我老大就要求我在开发过程中尽量实现组件化,因此,我也遇到了很多问题,但基本都解决了,所以趁周末把这些 ...
- vue父子传值与非父子传值
大概梳理下传值的几种方式 一:父子组件传值 props方式 子组件对外暴露方法并向父组件传递由于触发方法导致的值的变化,父组件接收子组件传递来的值:子组件接收父组件传递来的值,并根据传递来的值在子组件 ...
- vue 父子传值,子页面没有实时刷新的问题
在做高德地图的时候,发现列表点击编辑的时候,地图不能实时更新: <el-form-item label="门店坐标:" :label-width="formLabe ...
- vue——父子传值
转载地址:https://blog.csdn.net/xr510002594/article/details/83304141
- vue父子组件之间传值
vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种 ...
- vue父子组件的传值总结
久违的博客园我又回来了.此篇文章写得是vue父子组件的传值,虽然网上已经有很多了.写此文章的目的就是记录下个人学习的一部分.接下来我们就进入主题吧! 在开发vue项目中,父子组件的传值是避免不掉的. ...
- vue父子组件传值加例子
例子:http://element-cn.eleme.io/#/zh-CN/component/form 上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...
随机推荐
- FAT32格式和NTFS格式区别
NTFS(Windows):支持最大分区2TB,最大文件2TB: FAT16(Windows):支持最大分区2GB,最大文件2GB: FAT32(Windows):支持最大分区128GB,最大文件4G ...
- Unity Shader 基础(3) 获取深度纹理
Unity提供了很多Image Effect效果,包含Global Fog.DOF.Boom.Blur.Edge Detection等等,这些效果里面都会使用到摄像机深度或者根据深度还原世界坐标实现各 ...
- 【Teradata】数值类型
1.Decimal(n,m) 十进位小数 n为最大数值位数(取值1-38),m为小数位数(取值0-n). decimal(3,2) -9.99 to 9.99 decimal(4,4) - ...
- Java基础知识点(一)
前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...
- 【转】wamp 3.0.6(apache 2.4.23) 403 forbidden 解决办法
最近为了使用laraval框架,将wamp 升级到了比较高的版本,相应的apache也升级到了 2.4.23. larval是使用的挺好的,原来的apache倒是出现了问题:同一个局域网内,别人机器不 ...
- 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端
使用场景:有适配pc端改为适配pc端和移动端,使用2套css 代码实现App.vue created: function () { if(document.documentElement.client ...
- 001_Python2 的中文编码处理
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- 剑指offer——链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点. class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned ...
- AI Haar特征
Haar特征,也叫矩形特征,有四种特征(模板):边缘特征.线性特征.中心特征.对角线特征.每种模板都包含黑白两种区域. 模板的特征值=白色区域的像素和-黑色区域的像素和,反映的是图像的灰度变化情况. ...
- Spark笔记-repartition和coalesce
窄依赖.宽依赖以及stage的划分依据:https://www.cnblogs.com/itboys/p/6673046.html 参考: http://blog.csdn.net/u01268493 ...