zoukankan      html  css  js  c++  java
  • vue 父子间组件传值

    1.父组件向子组件传值:

      实例截图:

        

      实例代码:

    /*子组件代码*/     //child.vue
    <template>
      <div style="border: 1px solid red;margin: 10px;">
      	<h2>子组件</h2>
        <p>{{name}}</p>
      </div>
    </template>
    
    <script>
    export default {
    	props:{
    		name:{
    			//类型 普通类型:字符串(String)、数字(Number)、布尔值(Boolean)、空(Null)引用类型:数组(Array)、对象(Object)
    			/*其中,普通类型是可以在子组件中更改,不会影响其他兄弟子组件内同样调用的来自父组件的值,但是,引用类型的值,当在子组件中修改后,父组件的也会修改,那么后果就是,其他同样引用了改值的子组件内部的值也会跟着被修改。除非你有特殊的要求这么去做,否则最好不要这么做。*/
    			type:String,  
    			require:true,
    			default: "",  //默认值
    			validator: function (value) {   //验证器
    	        	return value;
    	      	}
    		},
    		
    	},
      data () {
        return {
          val:this.name
        }
      },
      mounted(){
      	console.log(this.name);
      	console.log(this.val);
      },
    }
    </script>

      

    /*父组件代码*/
    <template>
      <div class="hello">
      	<h1>父组件</h1>
      	<input v-model="msg">
        <Child :name="msg"></Child>  
      </div>
    </template>
    <script>
    	import Child from "@/components/child"
    export default {
      data () {
        return {
          msg: 'Welcome to Your Vue.js App'
        }
      },
      components:{
      	Child
      },
    }
    </script>
    

     

     2.子组件向父组件传值:

        实例截图:

          

        实例代码:

        

    /*子组件*/
    <template>
    	<div style="border: 1px solid red;margin: 10px;">
    		<h2>子组件</h2>
    		<p>{{val}}</p>
    		<button @click="sendMsg">向父传值</button>
    	</div>
    </template>
    
    <script>
    	export default {
    		data() {
    			return {
    				val: "aaaaaa"
    			}
    		},
    		methods:{
    			sendMsg(){
    				this.$emit("listen",this.val);
    			},
    		},
    	}
    </script>
    

      

    /*父组件*/
    <template>
      <div class="hello">
      	<h1>父组件</h1>
      	<input v-model="msg">
        <child  @listen="show"></child>  
      </div>
    </template>
    <script>
    import child from "@/components/child1"
    export default {
    	components:{
    	child
    },
      data () {
        return {
          msg: 'Welcome to Your Vue.js App'
        }
      },
      methods:{
      	show(val){
      		this.msg=val;
      	},
      },
    }
    </script>
    

      

    在通信中,无论是子组件向父组件传值还是父组件向子组件传值,他们都有一个共同点就是有中间介质,子向父的介质是自定义事件,父向子的介质是props中的属性。抓准这两点对于父子通信就好理解了(引至:https://www.cnblogs.com/daiwenru/p/6694530.html)

          

  • 相关阅读:
    电商项目面试题 及mysql面试题 太难没啥用
    fastDFS配置及日志查看 所遇到的问题
    fastDFS
    比较难的问题
    基础面试题
    难度比较大的面试题(2)
    项目功能介绍 非常有用
    Hibernate和Mybatis区别 详细 有用
    mysql和oracle的区别
    TCP/IP Note4
  • 原文地址:https://www.cnblogs.com/wangyunhui/p/9122336.html
Copyright © 2011-2022 走看看