回答編集履歴

2

整形

2017/08/25 13:54

投稿

pulse
pulse

スコア17

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  $bus: {
46
46
 
47
- get: function () {
47
+ get() {
48
48
 
49
49
  return EventBus
50
50
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  let ComponentY = Vue.extend({
60
60
 
61
- mounted: function(){
61
+ mounted(){
62
62
 
63
63
  this.$bus.$on('onMountedX', () => {
64
64
 
@@ -68,13 +68,13 @@
68
68
 
69
69
  }
70
70
 
71
- });
71
+ })
72
72
 
73
73
 
74
74
 
75
75
  let ComponentX = Vue.extend({
76
76
 
77
- mounted: function(){
77
+ mounted(){
78
78
 
79
79
  this.$bus.$emit('onMountedX')
80
80
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  components: [ComponentY]
84
84
 
85
- });
85
+ })
86
86
 
87
87
  ```
88
88
 

1

途中で送信したため、再編集

2017/08/25 13:54

投稿

pulse
pulse

スコア17

test CHANGED
@@ -12,4 +12,80 @@
12
12
 
13
13
 
14
14
 
15
- したがって、
15
+ したがって、基本的には
16
+
17
+ - 子から親は $emit
18
+
19
+ - 親から子は props
20
+
21
+
22
+
23
+ でデータを受け渡すのが良いかもしれません。
24
+
25
+
26
+
27
+ ただ、propsでは直接的に子コンポーネントのメソッドを呼び出すことはできません。
28
+
29
+ したがって、コンポーネント間の処理の連携には下記のようにEventBusを使う手段があります。
30
+
31
+
32
+
33
+ [親子間以外の通信](https://jp.vuejs.org/v2/guide/components.html#親子間以外の通信)
34
+
35
+
36
+
37
+ ```
38
+
39
+ var EventBus = new Vue()
40
+
41
+
42
+
43
+ Object.defineProperties(Vue.prototype, {
44
+
45
+ $bus: {
46
+
47
+ get: function () {
48
+
49
+ return EventBus
50
+
51
+ }
52
+
53
+ }
54
+
55
+ }
56
+
57
+
58
+
59
+ let ComponentY = Vue.extend({
60
+
61
+ mounted: function(){
62
+
63
+ this.$bus.$on('onMountedX', () => {
64
+
65
+ console.log('onMountedX')
66
+
67
+ })
68
+
69
+ }
70
+
71
+ });
72
+
73
+
74
+
75
+ let ComponentX = Vue.extend({
76
+
77
+ mounted: function(){
78
+
79
+ this.$bus.$emit('onMountedX')
80
+
81
+ }
82
+
83
+ components: [ComponentY]
84
+
85
+ });
86
+
87
+ ```
88
+
89
+
90
+
91
+ ただし、より大規模なものを作る場合はvuexみたいなものでステート管理を行うのが良いです。