• Vue主键


    1.组件定义

    1.定义组件并引用
    2.父组件向子组件传值
    3.子组件向父组件传值
    # 组件间传值: vuex (https://www/cnblogs.com/xiaonq/p/9697921.html)
    

    1.1 什么是组件

    • Html中有组件,是一段可以被复用的结构代码
    • Css中有组件,是一段可以被复用的样式
    • Js 中有组件 , 是一段可以被复用的功能
    • Vue中也有组件,指的就是一个模块,是一个独立的 完整的(包括html,css,js等),可以直接拿来用的

    1.2 组件特性

    • 组件的实例化对象,跟vue实例化对象一样,因此我们也可以将vue实例化对象看成组件

    • 组件间是独立的,因此数据要独立储存,方法要独立定义,彼此间不能共享

    2.父组件向子组件传值

    2.1components/Child.vue 定义子组件

    <template>
    	<div style='color:red'>
        	<h1>子组件内容</h1>
            <p>{{data}}</p>
         </div>
    </template>  
    
    <script>
    	export default{
            //子组件使用父组件的数据,只需要一步,在props中接收父组件的属性
            props:['data'], //接收父组件给子组件定义的属性
        }
    </script>    
    

    2.2components/Father.vue 定义父组件

    <templatr>
    	<div>
        	<h1>父组件内容</h1>
            父组件显示:{{msg}}
            <!--3.第三步:把父组件的某一个属性传递给子组件-->
            <Child
            	:data='msg'
              ></Child>
         </div>
    </templatr>    
    
    <script>
    	//@指定的是src路径
        import Child from '@/components/Child'  // 1. 第一步在父组件中导入子组件
        export default{
            // 2.第二步:父组件中注册子组件
            components:{
                Child
            },
            data(){
                return{
                    msg:'父组件的信息'
                } 
            },
            methods:{
                
            }
        }
    </script>
    

    2.3 router/index.js中注册路由

    import Father from '@/components/Father' //@装饰符指的是 src目录
    
    export default new Router({
        roures:[
            {path:'/component', name:'Father',component:Father}
        ]
    })
    

    2.4 测试

    • 子组件中可以通过定义props属性来接收父组件的数据

    在这里插入图片描述

    3.子组件向父组件传值

    3.1components/Child.vue子组件通过触发方法, 向父组件传值

    <template>
    	<div>{{data}}
        	<button @click='emitfather'>调用父组件方法</button>
        </div>
    </template>
    <script>
    	export default {
            props:['data'],//接收父组件给子组件定义的属性
            methods:{
                emitfather(){
                    console.log('调用emitfather方法')
                    //1.子组件调用父组件方法 并传值
                    // $emit 触发当前实例上的事件,也可以简单的理解为触发父组件的事件(向上冒泡)
                    this.$emit('changMsg','子组件信息修改后的data信息,传递给父组件')
                }
            }
        }
    </script>
    

    3.2components/Father.vue给子组件添加事件及事件处理方法

    <template>
    	<div>
        父组件显示:{{msg}}
        <!--4.把父组件的一个方法传递给子组件-->
        <Child
        	:data='msg'
            @changeMsg='change'  
            ></Child>
         </div>  
    </template>
    <script>
    	//1.导入
        import Child from '@/components/Child'
        export default {
            //2.注册
            components :{
                Child,
            },
            data(){
                return {
                    msg:'父组件的信息'
                }
            },
            methods:{
                //3.在父组件中定义一个change方法,可以在子组件中触发冰传值给父组件
                change(data){
                    //data接收是子组件中传递的数据
                    //debugger
                    alert('调用了父组件的方法,接收到信息:'+data)
                    this.mag = data //更新父组件的内容
                }
            }
        }
    </script>
    

    3.3 测试

    • 点击"调用父组件方法"就会调用

    在这里插入图片描述

    父组件的内容
    }
    }
    }

    
    #### 3.3 测试
    
    - 点击"调用父组件方法"就会调用
    
    
    
    [外链图片转存中...(img-XEpUZxre-1601362600025)]
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    UIPasteboard 粘贴板
    UIViewController没有随着设备一起旋转的原因
    UIButton 应用选择状态(附:UIButton 常用状态)
    WebService 中参数为枚举时引发的血案
    设计模式(1)之面向对象设计原则 阿正
    2012年年终总结 阿正
    生活工作如登山 阿正
    感谢我的技术总监 阿正
    尽孝要尽早 阿正
    我老了吗?不 你依然年轻 阿正
  • 原文地址:https://www.cnblogs.com/qx1996liu/p/13912610.html
Copyright © 2020-2023  润新知