vueコンポーネント間で値を渡す方法

php中世界最好的语言
リリース: 2018-04-16 17:49:44
オリジナル
3159 人が閲覧しました

今回は、vueコンポーネント間の値の転送方法と、vueコンポーネント間で値を転送する際の注意事項について、実際のケースを見てみましょう。

フロントエンドの私たちにとって、インターフェイスの作成は最大の問題ではなく、JS ページでのデータ転送などのデータに焦点を当てる必要があります。vue を学習するときは、それについても知る必要があります。データの使い方

もちろん、ストレージを使用することもできますが、キャッシュは必要ありません。Vuex をデータ対話に使用すると、Vue コードが柔軟で制御可能になり、データが状態に均一に保存されます。 。 ミューテーションの変更は、アクションを通じてのみトリガーできます。ただし、プロジェクトが Vuex を必要とするほど複雑でない場合もあります。 , (廃止されたvm.$dispatchについては説明しません) 多くの場合、イベントをキャプチャする必要があります。このとき、vueのeventbus

を使用できます。 イベントバスを使用する方法は非常に簡単です。最初のステップは、イベントバスとして機能するコンテナを作成することです

。 2 番目のステップでは、イベントをスローまたは送信する必要があります

3 番目のステップは、イベントを監視することです (おそらくこれは第 2 部です)

まず、イベントバスをグローバルに定義する必要があります

ここでイベントバスを定義します。これで最初のステップが完了しました。もちろん、グローバル変数がどこで定義されているかを知っておく必要があると思います

。 次に、最初にこのイベントをスローし、¥を使用します。 「送信」するために放出します

とにかく、これは理解できます。次に、監視する 3 番目のステップに進みます。 確かに。ここではすでに監視されています。クリックイベントはただの負担です

次に、インターフェースでそれらを使用する必要があります

まず、必要なファイルをインポートします:

ここでは、transimissionone と transimissiontwo という 2 つのファイルを使用しています '

次に定義です

2 つ目は

を使用することです 最後にプロジェクトを実行して効果を確認してください

これは主に全員が使用するためのものなので、主に 4 つのファイルのコードを以下に示します

トランジトン。 vue (イベントを送信するファイル)

<template> 
  <p class="transimission1"> 
  <button @click="get">点击发送数值到eventbus中</button>  
  </p> 
   
</template> 
 
<script> 
  export default { 
    name: "transimission1", 
    methods: { 
      get: function() { 
        console.log("Aaa"); 
        eventBus.$emit('eventBusName', "hellokugou"); 
      } 
    }, 
  } 
</script> 
<style> 
</style>
ログイン後にコピー

続いてtransittwo(リスナー)

<template> 
  <p class="transimissiontwo"> 
    <button @click="method1">点击console.log出eventbus的信息 
</button> 
  </p> 
</template> 
 
<script> 
  export default { 
    name: "transimissiontwo", 
    methods: { 
      method1: function() { 
        //使用on老监听事件 
        eventBus.$on('eventBusName', function(val) {  
          console.log("这个是用transimissiontwo的val值为:"+val) 
        }) 
      } 
    } 
  } 
</script> 
<style> 
 
</style>
ログイン後にコピー

次にハブが登場します。アプリ。 vue で

<template> 
  <p id="app"> 
    <click></click> 
  <transimissiontwo></transimissiontwo> 
    <transimissionone></transimissionone> 
  <sendparent @listenertochildevent="getmessagefromchild"></sendparent> 
    <value :locallogo="netlogo"></value> 
    <!--无法监听,说明要在那个组件中--> 
    <button @listenertochildevent="getmessagefromchild">测试能否监听</button> 
    <my_plug_in></my_plug_in> 
    <p class="choose_p"> 
      <ul> 
        <li> 
          <router-link to="/foo">foo页面</router-link> 
        </li> 
        <li> 
          <router-link to="/header">header页面</router-link> 
        </li> 
        <li> 
          <router-link to="/hello">hello页面</router-link> 
        </li> 
        <li style="clear: both;list-style: none;"></li> 
      </ul> 
    </p> 
    <p class="main"> 
      <router-view class="my_router_iew"></router-view> 
    </p> 
    <testmintui></testmintui> 
  </p> 
</template> 
 
<script> 
  import value from './components/value' 
  import click from "./components/click" 
  import my_plug_in from "./components/plug_in" 
  import sendparent from "./components/send_parent" 
  import testmintui from "./components/Test_mint-ui" 
  import transimissiontwo from "./components/transimissiontwo" 
  import transimissionone from "./components/transimissionone" 
  export default { 
    name: 'app', 
    data() { 
      return { 
        netlogo: "主页显示信息到组件中" 
      } 
    }, 
    components: { 
      value, 
      click, 
      my_plug_in, 
      sendparent, 
      testmintui, 
      transimissionone, 
    transimissiontwo, 
     
    }, 
    methods: { 
      getmessagefromchild: function(data) { 
        console.log(data); 
      } 
    } 
  } 
</script> 
<style> 
  body { 
    background-color: #f8f8ff; 
    font-family: 'Avenir', Helvetica, Arial, sans-serif; 
    color: #2c3e50; 
  } 
  ul { 
    width: 12rem; 
  } 
  ul li { 
    list-style: none; 
  } 
  ul li:not(:last-child) { 
    list-style: none; 
    width: 2rem; 
    margin-left: 0.1rem; 
    margin-right: 0.1rem; 
    float: left; 
    text-align: center; 
    background: #2C3E50; 
    color: white; 
  }    
  ul li a { 
    text-decoration: none; 
    font-size: 16px; 
    color: white; 
    line-height: 1rem; 
    text-align: center; 
  } 
  ul li:nth-child { 
    list-style: none; 
    clear: both; 
  } 
  .choose_p { 
    width: 100%; 
    overflow: scroll; 
  } 
</style>
ログイン後にコピー

を使用する 無駄なコードは無視してください。次のステップは、eventbus

window.eventBus = new Vue();
ログイン後にコピー

を定義することです それだけです、とても簡単です

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

3D効果を実現するためのAngular4


セカンダリリンケージの選択ドロップダウンメニューを実装するためのAngularJSのステップごとの説明


以上がvueコンポーネント間で値を渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート