Vue 父子通信之父子数据的双向绑定

子组件的接收值修改

1.用 v-model 绑定propos中的接收

2.将propos接收值 赋值给子组件的数据后 修改子组件的数据

 <!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>Document</title> 
    <script src="vue.min.js"></script> 
</head> 
<body> 
 
    <div id="vue"> 
    <use_fu :zi_receive_1="fu_message_1"  ></use_fu>
    <hr>
    <hr>
   父组件数据: {{fu_message_1}}
</div> 
    <template id="q1">
        <div>
            <!--  使用v-model绑定接收的数据
                修改接收的数据 
                不修改父子组件里面的数据
                    -->
          <h3>data:{{zi_message_1}}</h3> 
          <h3>props:{{zi_receive_1}}</h3> 
          input_model_zi_receive-1:  
          <input type="text" v-model="zi_receive_1">
         
         
         
         <!-- 在子组件数据中 使用数据接收 props从父组件传来的数据
             使用 v-model绑定子组件数据  只修改子组件的数据   接收的数据不保留-->

             <!-- 一般化从父组件里面直接接收的数据是不改变的
                 在接收后赋值给 子组件里面的数据后 直接对子组件里面的数据进行修改 -->
          <hr>
          input_model_zi_message2  
          <input type="text" v-model="zi_message_2">
          <p></p>
        data:<h2>{{zi_message_2}}</h2>
         props:<h2>{{zi_receive_1}}</h2>
          <hr>
        </div>
    </template>
 <script> 
 
 const q1={
     template:'#q1',
     data() {
         return {
             zi_message_1:'子组件里面数据',
             zi_message_2:this.zi_receive_1,
         }
     },
     props:['zi_receive_1','zi_receive_2'],
 }
   const vu = new Vue({ 
      el: '#vue', 
      data: { 
          fu_message_1:'这是父组件里面的数据——1',
          fu_message_2:'这是父组件里面的数据——2'
      },
      components:{
          use_fu:q1
      }
        }) 
        document.qs
    </script> 
</body> 
</html> 
修改接收值而修改父数据

将子传父 套入

 <!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>Document</title> 
    <script src="vue.min.js"></script> 
</head> 
<body> 
 
    <div id="vue"> 
    <use_fu :zi_receive_1="fu_message_1"  ></use_fu>
    <hr>
    <hr>
   父组件数据: {{fu_message_1}}
</div> 
    <template id="q1">
        <div>
            <!--  使用v-model绑定接收的数据
                修改接收的数据 
                不修改父子组件里面的数据
                    -->
          <h3>data:{{zi_message_1}}</h3> 
          <h3>props:{{zi_receive_1}}</h3> 
          input_model_zi_receive-1:  
          <input type="text" v-model="zi_receive_1">
         
         
         
         <!-- 在子组件数据中 使用数据接收 props从父组件传来的数据
         使用 v-model绑定子组件数据  只修改子组件的数据   接收的数据不保留-->

             <!-- 一般化从父组件里面直接接收的数据是不改变的
        在接收后赋值给 子组件里面的数据后 直接对子组件里面的数据进行修改 -->
          <hr>
          input_model_zi_message2  
          <input type="text" v-model="zi_message_2">
          <p></p>
        data:<h2>{{zi_message_2}}</h2>
         props:<h2>{{zi_receive_1}}</h2>
          <hr>
        </div>
    </template>
 <script> 
 
 const q1={
     template:'#q1',
     data() {
         return {
             zi_message_1:'子组件里面数据',
             zi_message_2:this.zi_receive_1,
         }
     },
     props:['zi_receive_1','zi_receive_2'],
 }
   const vu = new Vue({ 
      el: '#vue', 
      data: { 
          fu_message_1:'这是父组件里面的数据——1',
          fu_message_2:'这是父组件里面的数据——2'
      },
      components:{
          use_fu:q1
      }
        }) 
        document.qs
    </script> 
</body> 
</html> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 中,父子组件之间可以通过 props 和 events 实现数据双向绑定。具体的步骤如下: 1. 在父组件中定义一个数据,并将其作为 props 传递给子组件: ```vue <template> <div> <child-component :message="message" @update-message="updateMessage"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { message: '' }; }, methods: { updateMessage(value) { this.message = value; } } }; </script> ``` 2. 在子组件中使用 props 接收父组件传递的数据,并使用 $emit 方法触发一个自定义的事件来通知父组件更新数据: ```vue <template> <div> <input type="text" v-model="childMessage" @input="updateParentMessage"> </div> </template> <script> export default { props: ['message'], data() { return { childMessage: this.message }; }, methods: { updateParentMessage() { this.$emit('update-message', this.childMessage); } }, watch: { message(newValue) { this.childMessage = newValue; } } }; </script> ``` 在上述示例中,父组件通过 :message="message" 将自己的 message 数据以 props 的方式传递给子组件。子组件接收到这个父组件的 message 数据后,使用 v-model 绑定到一个本地的 childMessage 变量上。当子组件中的输入框内容发生变化时,通过 @input 事件触发 updateParentMessage 方法,该方法使用 $emit 触发自定义事件 'update-message' 并将子组件的 childMessage 数据作为参数传递给父组件。父组件接收到这个事件后,触发 updateMessage 方法来更新自己的 message 数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值