私はVueでアプリを開発しています。私はコンポーネント間でデータを送受信することに問題があります。既に$dispatch/$broadcast
、$emit/$on
で試してみましたが、まだ動作しています。 ClubSelection.vue
からvue_main.js
にactive_club
を選択して送付します。私のアプリのVue 2 - コンポーネント間の通信(データの送受信)
Vue version: 2.0.3
構造:
- vue_main - メインVueのファイル
- HeaderElement.vue(vue_mainの子)
- ClubSelection.vue(子のHeaderElement)
- HeaderElement.vue(vue_mainの子)
vue_mainするClubSelectionからactive_clubを送信する必要があります。
ClubSelection.vue
<script>
export default{
props: [
'club', 'title'
],
created(){
//Get club list
this.$http.get('/api/clubs', function(data) {
this.clubs = data;
console.log(data);
//read active club from parent
this.selected = this.$parent.$parent.active_club;
});
},
data(){
return{
clubs: [],
selected: null,
}
},
watch: {
selected: function(v) {
this.club = v;
//Post to database selected club
this.$http.post('/api/clubs/' + v + '/active')
},
club: function(v) {
this.selected = v;
//Change active_club at parent (THIS NOT WORKING)
// this.$emit('active_club', v);
// this.$parent.active_club = v;
club.$emit('active_club', v);
},
}
}
</script>
vue_main.js
const app = new Vue({
router,
data() {
return {
user: [],
active_club: null,
ranking: null
}
},
created: function() {
var self = this;
this.$http.get('/api/users/me', function(data) {
this.user = data;
self.active_club = data.active_club;
})
}
}).$mount('#app');
const club = new Vue();
//THIS NOT WORKING
club.$on('active_club', function (id) {
alert(id)
this.active_club = id;
});
エラー:
Vue warn]: Error in watcher "club" (found in component )
vue_main.js:16924 Uncaught (in promise) ReferenceError: club is not defined
私は、これはそれらの一つであり、多くのセットアップを試してみました。これを動作させるにはどうすればいいですか?
親子ではない2つの無関係なコンポーネントがある場合は、[親ではない子の通信](http://vuejs.org/guide/components.html#Non-Parent-Child-Communication)を使用できます。ドキュメントに記載されています。 – Mani