vue基础----组件通信($parent,$children)

1.按照dom的父子级关系,在子组件中可以通过$parent 直接调用父组件的方法,也可得到父组件的属性。

2.在父组件中通过$childrens可以得到一个子组件数组,能够在父组件中调用子组件的方法和得到属性。

3.特别注意一下_uid标识每一个组件。

下面是一个下拉菜单举例

 1 <body>
 2     <div id="app">
 3         <collapse>
 4             <collapse-item title="大学同学">大学同学A</collapse-item>
 5             <collapse-item title="高中同学">高中同学A</collapse-item>
 6             <collapse-item title="初中同学">初中同学A</collapse-item>
 7         </collapse>
 8     </div>
 9     <script src="./node_modules/vue/dist/vue.js"></script>
10     <script>
11         /* 组件通信 $parent 和$children的用法 _uid的用法*/
12         Vue.component("collapse",{
13             template:`
14                 <div class="box">
15                     <slot></slot>
16                 </div>
17             `,
18             data(){
19                 return {
20                     "yilia":1244
21                 }
22             },
23             methods:{
24                 changeCusionState(childId){
25                     /*element 是子组件可以直接调用 子组件的方法和属性*/
26                     this.$children.forEach(element => {
27                         if(element._uid !== childId){
28                             element.show = false;
29                         }
30                     });
31                 }
32             }
33         });
34
35         Vue.component("collapse-item",{
36             props:[‘title‘],
37             template:`
38                 <div>
39                     <div class="title" @click="handleClick">{{title}}</div>
40                     <div v-show="show">
41                         <slot></slot>
42                     </div>
43
44                 </div>
45             `,
46             data(){
47                 return {
48                     show:false
49                 }
50             },
51             methods:{
52                 handleClick(){
53                     this.show = !this.show;
54                     /*用 $parent直接调用父组件的方法*/
55                     console.log(this.$parent.yilia);
56                     this.$parent.changeCusionState(this._uid);
57                 },
58                 vueTest(){
59                     console.log("I am called!");
60                 }
61             }
62         });
63
64         let vm = new Vue({
65             el:"#app",
66             data:{
67                 msg:"hello vue"
68             }
69         });
70     </script>
72 </body>
1  .title {
2             width:120px;
3             height:30px;
4             text-align: center;
5             border:1px solid red;
6             margin-top:4px;
7         }

原文地址:https://www.cnblogs.com/moon-yyl/p/11620851.html

时间: 2024-10-02 23:20:24

vue基础----组件通信($parent,$children)的相关文章

vue中组件通信

前面看官方文档一直不能理解在子组件模板中引用父组件的数据,看了很多遍也是模糊,今天无意中看到一个demo,突然就明白了一些. <div id="componentPhone"> <!--在子组件模板中引用父组件的数据,数据是article,通过绑定的detail属性--> <my-component v-bind:detail="article"></my-component></div> var cp =

vue基础——组件(组件嵌套)

介绍 vue中页面是由组件组成的,即以.vue结尾的文件. .vue文件由三部分组成,分别是template.script.style. 分别写html.js.css代码. 组件之间可以互相嵌套.所以就形成了整个页面. 外部引用的都是一些公共的方法和样式这种. 组件嵌套 1.创建一个login组件 2.的在HelloWorld.vue中引用 export default就是可以让外部引用的意思. 原文地址:https://www.cnblogs.com/zhanzhuang/p/9241232.

vue兄弟组件通信

所有需要通信的组件共用一个事件对象.new Vue(),新new一个vue对象,然后所有组件都访问这个对象,通过这个对象$emit事件,也通过这个对象$on监听事件. 实现一:直接在单文件里面实例化根Vue的时候,在data里return一个属性,值为new Vue(),例如bus: new Vue() 在具体的组件页面上,直接用this.$root.bus.$emit('eventName')发送事件. 在另一个组件页面的mounted函数里面,用this.$root.bus.$on('eve

vue基础----组件通信(props,$emit,$attrs,$listeners)

一.父传子,子传孙 1. props 1>在父组件中通过子组件自定义的标签属性来传递数据. 2>在子组件中通过props声明希望用到的数据 1 <body> 2 <div id="app"> 3 <my-father :msg1="msg" a="10" :b="20" @click="fn"></my-father> 4 </div>

Vue父子组件通信

我们在开发过程中,不可能只在一个组件里面写东西,当一个组件的内容过多时候,我们会把各个块的内容分别作为一个单独的组件分离出去,这些分离出去的组件被叫做子组件,但是一般请求数据的话还是在父组件(最大的外层中)钟情求,这就要求我们要将父组件中的数据传给各个子组件,子组件才能通过v-for指令进行遍历,遍历之后再通过item将数据传给比自己更小的子组件,这样以此类推,最后的小组件再来展示数据,组件开发中不可能因为某个小组件而单独发一次请求,这就需要用到组件之间的通信 通常情况下子组件是不能直接访问父组

Vue.js组件之间的通信

导语:组件之间的关系不外乎两种, 父子组件和非父子组件,本文将对两类组件之间的通信方式进行详细阐述. 父子组件间的通信 通信方式1(单向绑定): Props down, Events up (建议使用) Props down, Events up 是指 使用props向子组件传递数据,父组件属性发生变化时,子组件可实时更新视图:子组件发生变化,可以使用$emit发送事件消息,以此向父组件传递变化消息. props 是单向的,当父组件的属性变化时,将传递给子组件,但子组件中的props属性变化不会

vue基础内容{通信,注册,路由,组件}

ES6常用语法 -- 变量 -- var 变量提升 -- let  {} -- const 常量 -- 模板字符串 -- `` -- ${} -- 函数 -- 箭头函数 -- this -- 普通函数取决于函数最近的调用者 -- 箭头函数取决于当前上下文环境 -- 数据的解构 -- 注意语法 -- 类 -- class 定义类 -- extends 继承 -- constructor 构造方法 -- 子类是没有this的 用super() -- export import -- export {

四、vue基础--自定义组件

1.语法:Vue.component("组件名字",{data,template}),代码如下: a. data: 必须是一个函数,有一个返回值.和vue里面的使用方法一样 b. template: 用来标示这个组件的渲染后的具体的代码 <div id='app'> <button-count></button-count> <button-count></button-count> <button-count>&

Vue基础篇--8组件基础 component

Vue基础篇--8组件基础 component 1.简单示例 <div id='components1'> <button-conter></button-conter> </div> <script> // 定义一个名为button-conter组件 Vue.component("button-conter",{ data:function () { return { count:0 } }, template:`<b