質問編集履歴
4
発火のタイミングを書き忘れました。moutedの時に呼び出しています。
title
CHANGED
File without changes
|
body
CHANGED
@@ -47,6 +47,9 @@
|
|
47
47
|
this.$data.isComp = true
|
48
48
|
}
|
49
49
|
}
|
50
|
+
mounted() {
|
51
|
+
initializeChild();
|
52
|
+
}
|
50
53
|
}
|
51
54
|
</script>
|
52
55
|
```
|
3
度々申し訳ありません。実際のコードから最低限まで絞ったので情報が抜けていました。追記します。
title
CHANGED
File without changes
|
body
CHANGED
@@ -27,6 +27,7 @@
|
|
27
27
|
</template>
|
28
28
|
|
29
29
|
<script>
|
30
|
+
import child-component from 'child-component'
|
30
31
|
export default {
|
31
32
|
methods: {
|
32
33
|
data() {
|
@@ -53,7 +54,9 @@
|
|
53
54
|
### 子コンポーネント
|
54
55
|
```vue
|
55
56
|
<template">
|
57
|
+
<div class="chilid-container">
|
56
|
-
<p>子コンポーネント</p>
|
58
|
+
<p>子コンポーネント</p>
|
59
|
+
</div>
|
57
60
|
</template>
|
58
61
|
|
59
62
|
<script>
|
2
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,15 +1,26 @@
|
|
1
1
|
~~親コンポーネントから子コンポーネントのメソッドを実行したいのですが、子コンポーネントの指定ができず、子コンポーネントのメソッドが実行できません。
|
2
2
|
具体的には、子コンポーネントにrefを指定しても、undifindが帰ってきます。~~
|
3
3
|
|
4
|
-
親から子コンポーネントの関数を実行することが出来ないことがわかりました。
|
4
|
+
~~親から子コンポーネントの関数を実行することが出来ないことがわかりました。
|
5
|
-
vueの方針として、propの状態変化でイベントを起こすことを推薦しているようなので、propの監視で対応しようと考えました。
|
5
|
+
vueの方針として、propの状態変化でイベントを起こすことを推薦しているようなので、propの監視で対応しようと考えました。~~
|
6
6
|
|
7
|
+
なんども申し訳ありません。
|
8
|
+
できる様です。
|
9
|
+
|
10
|
+
ただ、私の場合だと、というエラーが出てしまい、methodsに登録してるメソッドを読むことが出来ず、
|
11
|
+
発火できません。
|
12
|
+
|
13
|
+
> Error in mounted hook: "TypeError: Cannot read property 'メソッド名' of undefined"
|
14
|
+
|
7
15
|
監視に```watch```を使ってみようと考えたのですが動きません。
|
8
16
|
propに対して、watchを起動させるにはどうしたらよいでしょうか?
|
9
17
|
|
10
18
|
## 親コンポーネント
|
11
19
|
親コンポーネントで、changeComp```changeComp```をい実行するとalertが発火する想定。
|
12
20
|
|
21
|
+
記述ミスがあったため修正します。
|
22
|
+
実際のコードから抜粋しているので、設定を書き忘れていた箇所がありました。
|
23
|
+
|
13
24
|
```vue
|
14
25
|
<template">
|
15
26
|
<child-component ref="child" v-bind:is-comp="this.$data.isComp"></child-component>
|
@@ -23,6 +34,9 @@
|
|
23
34
|
isComp: false
|
24
35
|
}
|
25
36
|
},
|
37
|
+
components {
|
38
|
+
child-component
|
39
|
+
}
|
26
40
|
initializeChild() {
|
27
41
|
const { child } = this.$refs
|
28
42
|
// 子コンポーネントを呼ぶ
|
@@ -46,7 +60,7 @@
|
|
46
60
|
export default {
|
47
61
|
prop['isComp'],
|
48
62
|
watch: {
|
49
|
-
isComp:
|
63
|
+
isComp: function(val) {
|
50
64
|
this.reset()
|
51
65
|
}
|
52
66
|
}
|
1
pripを使う方法に変えため記事を調整します。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
【vue】親コンポーネント
|
1
|
+
【vue】親コンポーネントにbindしているpropの値がwatch出来ない。
|
body
CHANGED
@@ -1,30 +1,35 @@
|
|
1
|
-
親コンポーネントから子コンポーネントのメソッドを実行したいのですが、子コンポーネントの指定ができず、子コンポーネントのメソッドが実行できません。
|
1
|
+
~~親コンポーネントから子コンポーネントのメソッドを実行したいのですが、子コンポーネントの指定ができず、子コンポーネントのメソッドが実行できません。
|
2
|
+
具体的には、子コンポーネントにrefを指定しても、undifindが帰ってきます。~~
|
2
3
|
|
3
|
-
|
4
|
+
親から子コンポーネントの関数を実行することが出来ないことがわかりました。
|
5
|
+
vueの方針として、propの状態変化でイベントを起こすことを推薦しているようなので、propの監視で対応しようと考えました。
|
4
6
|
|
7
|
+
監視に```watch```を使ってみようと考えたのですが動きません。
|
8
|
+
propに対して、watchを起動させるにはどうしたらよいでしょうか?
|
5
9
|
|
6
|
-
##
|
10
|
+
## 親コンポーネント
|
7
|
-
|
11
|
+
親コンポーネントで、changeComp```changeComp```をい実行するとalertが発火する想定。
|
8
12
|
|
9
|
-
> [Vue warn]: Error in created hook: "TypeError: Cannot read property 'reset' of undefined"
|
10
|
-
|
11
|
-
---
|
12
|
-
|
13
|
-
> TypeError: Cannot read property 'reset' of undefined
|
14
|
-
|
15
|
-
### 親コンポーネント
|
16
13
|
```vue
|
17
14
|
<template">
|
18
|
-
<child-component ref="child"></child-component>
|
15
|
+
<child-component ref="child" v-bind:is-comp="this.$data.isComp"></child-component>
|
19
16
|
</template>
|
20
17
|
|
21
18
|
<script>
|
22
19
|
export default {
|
23
20
|
methods: {
|
21
|
+
data() {
|
22
|
+
return {
|
23
|
+
isComp: false
|
24
|
+
}
|
25
|
+
},
|
24
26
|
initializeChild() {
|
25
27
|
const { child } = this.$refs
|
26
28
|
// 子コンポーネントを呼ぶ
|
27
29
|
child.reset();
|
30
|
+
},
|
31
|
+
changeComp() {
|
32
|
+
this.$data.isComp = true
|
28
33
|
}
|
29
34
|
}
|
30
35
|
}
|
@@ -39,6 +44,12 @@
|
|
39
44
|
|
40
45
|
<script>
|
41
46
|
export default {
|
47
|
+
prop['isComp'],
|
48
|
+
watch: {
|
49
|
+
isComp: functon(val) {
|
50
|
+
this.reset()
|
51
|
+
}
|
52
|
+
}
|
42
53
|
methods: {
|
43
54
|
reset() {
|
44
55
|
console.log('reset')
|
@@ -50,9 +61,5 @@
|
|
50
61
|
|
51
62
|
### 試した事
|
52
63
|
|
53
|
-
-
|
64
|
+
- propではなく、同じコンポーネントのdataの値を設置してみた
|
54
|
-
->
|
65
|
+
-> 反応しない。
|
55
|
-
- refに指定した名前が重複しているかもしれないので変更する。
|
56
|
-
-> 結果は同じ。
|
57
|
-
- refで取得した要素をconsol.logで見る
|
58
|
-
-> undifindなので、そもそもrefで指定しても要素が取れていない。
|