2017-02-16 17 views
0

マイビューは次のようである:コンポーネント1からコンポーネント2に変数の値を送る方法は? (vue.js 2)

<div class="row"> 
    <div class="col-md-3"> 
     <search-filter-view ...></search-filter-view> 
    </div> 
    <div class="col-md-9"> 
     <search-result-view ...></search-result-view> 
    </div> 
</div> 

マイ検索フィルタビューコンポーネントは次のようである:

<script> 
    export default{ 
     props:[...], 
     data(){ 
      return{ 
       ... 
      } 
     }, 
     methods:{ 
      filterBySort: function (sort){ 
       this.sort = sort 
       ... 
      } 
     } 
    } 
</script> 

マイ検索結果ビューコンポーネントは次のようです:

<script> 
    export default { 
     props:[...], 
     data() { 
      return { 
       ... 
      } 
     }, 

     methods: { 
      getVueItems: function(page) { 
       ... 
      } 
     } 
    } 
</script> 

IはgetVueItems法(成分2)

にソートパラメータ(filterBySort法、成分1)の表示値が欲しいです

どうすればいいですか?

+0

vuexの助けを借りて、これらのことを簡単にすることができます。https://vuex.vuejs.org/ja/をご覧ください。 –

+0

シンプルなケースでは、ダミーのvueを使用して、両方の間でデータを渡すことができます。ここでの説明は次のとおりです。https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication – Serge

答えて

2

Sergeが参照しているものについて詳しく説明します。 Vue v1では、コンポーネントは世界中にメッセージをブロードキャストできるだけでなく、他の人がメッセージを聞いて行動することができます。 Vue2では、より明快になるように少し洗練されています。

あなたがする必要があるのは、既存の両方のコンポーネントに見えるメッセンジャーまたは通信バスとして別のVueインスタンスを作成することです。 (ES5を使用)例:Vuex(のリアクトReduxののVueの者と同等)を調査する必要があり、単純なコンポーネント・ツー・コンポーネントの通信よりも複雑な事項については

// create the messenger/bus instance in a scope visible to both components 
var bus = new Vue(); 

// ... 

// within your "result" component 
bus.$emit('sort-param', 'some value'); 

// ... 

// within your "filter" component 
bus.$on('sort-param', function(sortParam) { 
    // ... do something with it ... 
}); 

関連する問題