vue组件之间的传值方式

一.父组件向子组件传值方式

1.1父组件向子组件传数据方式

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="vue.js"></script>
 9 </head>
10 <body>
11     <div id="app">
12         <com1></com1>
13     </div>
14     <script>
15
16         var vm=new  Vue({
17             el:‘#app‘,
18             data:{
19                 msg:‘123==啊父组件中的数据‘
20             },
21             methods: {
22
23             },
24             // 定义一个私有子的组件
25             components: {
26                 // 来看下子组件能拿到vm父组件中的data里面的msg数据吗
27                 // 结论:经过演示,发现,子组件中,默认无法访问到父组件的data上的数据和methods中的方法
28                 // 那么子组件怎么获取到父组件的数据
29                 com1:{              //这里会报错:子组件直接引用父组件的msg数据
30                     template:‘<h1>这是子组件--{{msg}}</h1>‘
31                 }
32             }
33         })
34     </script>
35 </body>
36 </html>
  // 那么子组件怎么获取到父组件的数据: 父组件,可以在引用子组件的时候,通过熟悉绑定(v-bind)的形式,把需要传递给子组件的数据,以属性绑定的形式,子组件通过props定义父组件传过来的数据才能使用
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="vue.js"></script>
 9 </head>
10 <body>
11     <div id="app">
12         <!-- 父组件,可以在引用子组件的时候,通过熟悉绑定(v-bind)的形式,把需要传递给子组件的数据,以属性绑定的形式, -->
13         <!-- 传递到子组件内部,供子组件使用 -->
14         <com1 v-bind:parentmsg="msg"></com1>
15     </div>
16     <script>
17
18         var vm=new  Vue({
19             el:‘#app‘,
20             data:{
21                 msg:‘123==啊父组件中的数据‘
22             },
23             methods: {
24
25             },
26             // 定义一个私有子的组件
27             components: {
28                 // 来看下子组件能拿到vm父组件中的data里面的msg数据吗
29                 // 结论:经过演示,发现,子组件中,默认无法访问到父组件的data上的数据和methods中的方法
30                 // 那么子组件怎么获取到父组件的数据
31                 com1:{
32                     data(){
33                         // 注意:子组件中的data数据,并不是父组件传递过来的,而是子组件自身私有的,比如:子组件子组件通过ajax,
34                         // 请求回来的数据,都可以放在data身上
35                         return{
36                             title:‘123‘,
37                             content:‘qqq‘
38                         }
39                     },
40                     template:‘<h1>这是子组件--{{parentmsg}}</h1>‘,
41                     // 注意:组件中的所有props中的数据,都是通过父组件传递给子组件的
42                      // 注意子组件中的data和props数据的区别:props只读,无法重新赋值,data数据都是可读可写
43                     // props是一个数组,把父组件传递过来的parentmsg属性,先在props数组中定义一下,这样才能使用这个数据
44                     props: [‘parentmsg‘]
45
46                 }
47             }
48         })
49     </script>
50 </body>
51 </html>
1.2父组件向子组件传递方法,使用的是事件绑定机制,子组件通过$emit()方法拿到父组件传过来的数据
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="vue.js"></script>
 9 </head>
10 <body>
11     <div id="app">
12         <!-- 如果是事件的话就用事件绑定机制 -->
13         <!-- 父组件向子组件传递方法,使用的是事件绑定机制 v-on,当我们自定义一个事件属性之后, -->
14         <!-- 那么子组件就能够,通过某些方式,来调用传递这个方法了 -->
15         <com2 v-on:func="show"></com2>
16     </div>
17     <template id="tmp1">
18         <div>
19             <h1>这是子组件</h1>
20             <input type="button" value="这是子组件中的按钮,-点击它,触发父组件传递过来的func方法" @click="myclick">
21         </div>
22     </template>
23     <script>
24         // 定义一个字面量类型的组件模板对象
25         var com2={
26             // 通过指定一个ID,表示说,要去加载这个指定ID的template元素中的内容,当作组件的HTML结构
27             template:‘#tmp1‘,
28             methods:{
29                 myclick(){
30                     // 当点击子组件按钮的时候,如何拿到父组件传递过来的func方法,并调用这个方法
31                     // emit触发
32                     this.$emit(‘funcs‘)
33                 }
34             }
35         }
36         var vm=new  Vue({
37             el:‘#app‘,
38             data:{
39                show(){
40                    console.log(‘调用了父组件上的show方法‘)
41                }
42             },
43             methods: {
44
45             },
46             components: {
47                 com2
48                 // 类似于 com2:com2
49
50             }
51         })
52     </script>
53 </body>
54 </html>

 
 

 

原文地址:https://www.cnblogs.com/wanqingcui/p/10757344.html

时间: 2024-08-04 07:53:58

vue组件之间的传值方式的相关文章

Vue组件之间的传值方法

在vue当中有两种组件之间的传值方法,分别是 * 父子组件* 之间的传值和* 非父子组件 *之间的传值方法 父子组件之间的传值方法 父子组件之间的传值分为两种 * 父组件给子组件传值 子组件给父组件之间的传值 父组件给子组件传值方法 // 父 <div id = "app"> <my-content></my-content> </div> // 子 <template id="content"> <

vue 组件之间的传值

组件之间的传值有三种  1,父组件给子组件传值 ,   2,子组件给父组件传值   3, 非父子组件之间的传值(又叫兄弟组件传值) 1.父组件给子组件传值   (父组件给子组件传值需要通过props) 首先我的页面结构是这样的  child是子组件   father是父组件, 在这里我新建一个父组件  father.vue <template> <div> <div>这是父组件</div> <!-- 使用组件child --> <child

【vue组件之间互相传值:父传子,子传父】

今看到一篇很不错的vue组件传值文章,便于理解,遂做笔记- 一般页面的视图App.vue应为这样 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue2.Child.vue的中创建props,然后创建一个名为message的属性 3.在App.vue中注册Child组件,并在template中加入child标签,标签中添加message属性并赋值 4.保存修改的文件,查看浏览器 5.我们依然可以对message的值进行v-bind动态绑定 此

vue 学习五 深入了解components(父子组件之间的传值)

上一章记录了 如何在父组件中向子组件传值,但在实际应用中,往往子组件也要向父组件中传递数据,那么此时我们应该怎么办呢 1.在父组件内使用v-on监听子组件事件,并在子组件中使用$emit传递数据 //父组件 <template> <div id="home"> <com test='12345' test2='1213232111111' @a_even="a_even"></com> //使用v-on监听子组件事件

vue中组件之间的传值

按照对象分类: 一.父子组件之间的传值 1.使用props和$emit 2.在引入的子组件中使用ref,通过this.$refs.xxx.方法/值来获取子组件中的方法或者值 3.子组件中使用this.$parent来获取父组件中的值或者方法 4.父组件中使用this.$children来获取子组件中的值或者方法 二.兄弟组件中的传值 1.使用eventBus作为中间件,然后使用$emit去抛出事件,使用$on去监听事件 这里要注意一些事项:a.bus.$emit在beforeDestroy中去触

vue组件间通信六种方式(完整版)

vue组件间通信六种方式(完整版) 前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示,A 和 B.B 和 C.B 和 D 都是父子关系,C 和 D 是兄弟关系,A 和 C 是隔代关系(可能隔多代). 针对不同的使用场景,如何选择行之有效的通信方式?这是我们所要探讨的主题.本文总结了vue组件间通信的几种方式,如props.$emit/$on.vuex.$parent / $chil

Vue组件之间的传参

Vue组件之间的传参方式有三种 第一:父传子 第二:子传父 第三:兄弟之间相传 第一,父传子,顾名思义,外层组件传参给嵌套内部的组件 在父代中嵌套的标签 <son v-bind:toSon="fatherData"></son> //发送数据给子代 在子代中接收数据 需要添加一个属性叫做prpos props:["toSon"], <!DOCTYPE html> <html lang="en"> &

事件总线bus解决兄弟组件之间的传值

原文引用https://www.dazhuanlan.com/2019/08/25/5d625951eff92/ 事件总线bus解决兄弟组件之间的传值 实际运用: 封装一个Bus.js 123 import Vue from 'vue'const Bus = new Vue()export default Bus 在组件调用时引入 组件一: 1234567891011121314 import Bus from './Bus' export default { data() { return {

vue组件之间的通信

vue组件间的通信有父--->子.子--->父.非父子之间的通信 虽然我们稍微复杂的项目都用vuex来管理了,但是还是想写一篇关于有父--->子.子--->父.非父子 之间通信的文章.下面通过代码来讲述 父--->子组件间的通信 父级页面: <template> <div id="app"> <Header :parentMsg='parentMsg' > </Header> </div> <