ホームページ  >  記事  >  ウェブフロントエンド  >  vueコンポーネントと子・親間の通信の詳細例(2)

vueコンポーネントと子・親間の通信の詳細例(2)

小云云
小云云オリジナル
2017-12-26 13:20:301726ブラウズ

Vue コンポーネントの親子通信の詳細な説明で学習を続けます。この記事では、主に Vue コンポーネント間の親子間の通信に関する情報を詳しく紹介します。興味のある方はぜひ参考にしてください。

2. コンポーネント間の通信 (子コンポーネントが親コンポーネントに値を渡す)

イベントを通じてデータ送信を完了します。

①イベントを通じて子コンポーネントから渡された値を受け取るメソッドを親コンポーネントに定義する


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

②イベント処理関数をバインドする

イベントは通常カスタムイベントです


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

③子コンポーネントでイベントをトリガーするコンポーネント


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

概要:

Vue では、親コンポーネントと子コンポーネントの関係は、プロパティが下、イベントが上として要約できます。親コンポーネントは 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コンポーネントの親子の詳細な説明通信(1)

vueコンポーネントのv forコマンドの紹介とv-for使用時のアラーム問題の分析

vueコンポーネントでのiframe要素の使い方の例

以上がvueコンポーネントと子・親間の通信の詳細例(2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。