>  기사  >  웹 프론트엔드  >  Vue 컴포넌트 간 통신 상세 예 자식과 부모에 대한 자세한 설명(2)

Vue 컴포넌트 간 통신 상세 예 자식과 부모에 대한 자세한 설명(2)

小云云
小云云원래의
2017-12-26 13:20:301768검색

Vue 컴포넌트의 부모-자식 커뮤니케이션에 대한 자세한 설명과 함께 계속 학습해 보세요. 이 글은 주로 Vue 컴포넌트 간의 자녀와 부모 간의 의사소통에 관련된 정보를 자세히 소개하고 있으며, 관심 있는 친구들이 참고할 수 있기를 바랍니다.

2. 구성요소 간 통신(하위 구성요소는 상위 구성요소에 값을 전달)

이벤트를 통해 데이터 전송을 완료합니다.

①이벤트를 통해 하위 구성요소가 전달한 값을 받는 메소드를 상위 구성요소에 정의합니다.


methods:{
  recvMsg:function(msg){
  //参数msg就是子组件通过事件出来的数据
  }
}

②이벤트 처리 기능 바인딩

이벤트는 일반적으로 맞춤 이벤트입니다.


<child-component @myEvent="recvMsg"></child-component>

③자식에서 이벤트 실행 Components


      事件名,值
this.$emit(&#39;myEvent&#39;,myPhone)
//触发一个叫做myEvent的事件,同时把第二个参数数据传递给事件对应的处理函数

요약:

Vue에서 상위 및 하위 구성 요소 간의 관계는 props down, events up으로 요약될 수 있습니다. 상위 컴포넌트는 props를 통해 하위 컴포넌트에 데이터를 전달하고, 하위 컴포넌트는 이벤트를 통해 상위 컴포넌트에 메시지를 보냅니다.


<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>组件间通信子传父</title>
  <script src="js/vue.js"></script>
 </head>
 <body>
 <p id="container">
    <p>{{msg}}</p>
    <parent-component></parent-component>
  </p>
  <script>
    //通过事件的方式传递
    //  绑定 -- 触发
    Vue.component("parent-component",{
      data:function(){
        return {
          sonMsg:""
        }
      },
      methods:{
        //msg参数要拿子传递的值          
        recvMsg:function(msg){
          console.log("父组件接收到子组件的数据"+msg);
          this.sonMsg = msg;

        }
      },
      template:`
        <p>
          <h1>这是父组件</h1>
          <p>子组件传来的数据为:{{sonMsg}}</p>
          <hr/>
          <child-component @customEvent="recvMsg"></child-component>
        </p>
      `
    })
    Vue.component("child-component",{
      methods:{
        sendMsg:function(){
          //来触发绑定给子组件的自定义方法
          //this.$emit("customEvent");第一个参数触发
          //this.$emit("customEvent");第二个参数传值
          this.$emit("customEvent","哈哈哈哈");
        },
      },
      template:`
        <p>
          <h1>这是子组件</h1>
          <button @click="sendMsg">senToFather</button>
        </p>
      `
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

자식 컴포넌트에 입력을 넣고, 버튼을 클릭하면 사용자가 입력한 내용이 상위 컴포넌트로 전송됩니다.


<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>子与父之间的通信</title>
  <script src="js/vue.js"></script>
 </head>
 <body>
 <p id="container">
    <p>{{msg}}</p>
    <parent-component></parent-component>
  </p>
  <script>
  //创建父组件
    Vue.component("parent-component",{
    //data属性
      data:function(){
        return{
          sonMsg:""
        }
      },
      methods:{
        recvMsg:function(msg){
          this.sonMsg = msg
        }
      },
      template:`
        <p>
          <h1>父组件</h1>
          <h4>子组件传递的数据:{{sonMsg}}</h4>
          <child-component @customEvent="recvMsg"></child-component>
        </p>
      `
    })
    //创建子组件
    Vue.component("child-component",{
      data:function(){
        return {
          myInput:""
        }
      },
      methods:{
        sendMsg:function(){
          this.$emit("customEvent",this.myInput);
        }
      },
      template:`
        <p>
          <h1>子组件</h1>
          <input type="text" v-model="myInput"/>
          <button @click="sendMsg">发送</button>
        </p>
      `
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

관련 추천:

vue 컴포넌트 parent-child에 대한 자세한 설명 통신(1)

vue 컴포넌트의 v for 명령 소개 및 v-for

vue 컴포넌트의 iframe 요소 사용 방법 예시

위 내용은 Vue 컴포넌트 간 통신 상세 예 자식과 부모에 대한 자세한 설명(2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.