This repository was archived by the owner on May 24, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Communication between Components
Pascal edited this page Aug 31, 2017
·
4 revisions
import Vue from 'vue'
import App from './App.vue'
export const eventBus = new Vue({
methods: {
changeAge (age) {
this.$emit('ageWasEdited', age);
}
}
});
new Vue({
el: '#app',
render: h => h(App)
})/src/components/UserEdit.vue#L20
<template>
<div class="component">
<h3>You may edit the User here</h3>
<p>Edit me!</p>
<p>User Age: {{ userAge }}</p>
<button @click="editAge">Edit Age</button>
</div>
</template>
<script>
import { eventBus } from '../main';
export default {
props: ['userAge'],
methods: {
editAge() {
this.userAge = 30;
// this.$emit('ageWasEdited', this.userAge);
// eventBus.$emit('ageWasEdited', this.userAge);
eventBus.changeAge(this.userAge); // This method is defined in eventBus and triggers 'ageWasEdited'
}
}
}
</script>
<style scoped>
div {
background-color: lightgreen;
}
</style>/src/components/UserDetail.vue#L35
<template>
<div class="component">
<h3>You may view the User Details here</h3>
<p>Many Details</p>
<p>User Name: {{ switchName() }}</p>
<p>User Age: {{ userAge }}</p>
<button @click="resetName">Reset Name</button>
<button @click="resetFn()">Reset Name</button>
</div>
</template>
<script>
import { eventBus } from '../main';
export default {
props: {
// Other Code
userAge: Number
},
methods: {
// Other Code
},
created () {
// Triggered when $emit 'ageWasEdited'
eventBus.$on('ageWasEdited', (age) => {
this.userAge = age;
});
}
}
</script>- 00 Home
-
01 DOM Interactions
- 01 Events and Methods
- 02 HTML Binding
- 03 Computed Props
- 04_conditional_and_lists
- 05_filters
- 06 Components
- 07_disable_rerendering
- 08_raw_html
- 09_events
- 10_two_way_binding
- 11_computed_counts
- 12_shorthand
- 13 Dynamic CSS
- 14_using_style
- Exercise 1
- Exercise 2
- Exercise 3
- Exercise 4
-
02 Conditionals and Lists
- 01_v_if
- 02 v-for
- Exercise
- 03_monster_slayer
-
04_vue_instance
- 01_instance_vue
- 02_vue_lifecycle_in_practice
- 05_vue_cli
- 06_components
- 07_component_assignment
- 08 Communication between Components
-
09_advanced_components
- Assignment_8
- advanced_components
- 10_Wonderful_quoute_project
-
11 Forms
- form_assignments
- form_input
-
12_directives
- Assignment_directives
- custom_directives
-
13_filters_and_mixins
- assignment_filters_and_mixins
- filters_and_mixins
- 14 Animations and Transitions
-
15_http
- vue-resource
-
16 Routing
- routes
-
17 Vuex
- State Management
- vuex_master
-
18 Final Project
- the_stock_trader_app
- Assignment_7
- VueImages
- vue-mindspace