若是項目很大,組件不少,怎麼樣才能準確的、快速的尋找到咱們想要的組件了??html
1)$refsvue
首先你的給子組件作標記。demo :<firstchild ref="one"></firstchild>app
而後在父組件中,經過this.$refs.one就能夠訪問了這個自組件了,包括訪問自組件的data裏面的數據,調用它的函數函數
2)$childrenthis
他返回的是一個組件集合,若是你能清楚的知道子組件的順序,你也能夠使用下標來操做;spa
1
2
3
|
for
(let i=0;i<
this
.$children.length;i++){
console.log(
this
.$children[i].msg);輸出子組件的msg數據;
}
|
接下來就給一個長一點的deno.net
首先定義一個父組件:parentcomponent,code
在父組件中我又是使用了兩個自組件(假若有一百個自組件)[明確一點,組件只能有一個根節點],根節點是啥,我不知道。。。。。。component
1
2
3
4
5
6
7
8
|
<template id=
"parentcomponent"
>
<div >
<p>
this
is a parent-component</p>
<firstchild ref=
"f1"
></firstchild>
<secondchild ref=
"f2"
></secondchild>
<button @click=
'show_child_of_parents'
>show child msg</button>
</div>
</template>
|
分別給出兩個字組件的定義:(第2個使用的是template,第1個是script) htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<script type=
"text/x-template"
id=
"childOne"
>
<div>
<p>
this
is first child</p>
//使用stop阻止默認事件(vue的事件處理機制)
<button @click.stop=
'getParent'
>get parent msg</button>
</div>
</script>
<template id=
"childSec"
>
<div>
<p>
this
is second child</p>
</div>
</template>
|
組件模板定義好了,就是用:
1)掛在元素:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<script>
new
Vue({
el:
"#app"
,
data:{},
components:{
"parent-component"
:{
template:
'#parentcomponent'
,
data(){
return
{msg:
'這是父組件中的內容'
}
},
methods:{
show_child_of_parents(){
//children方式訪問自組件
for
(let i=0;i<
this
.$children.length;i++){
console.log(
this
.$children[i].msg);
}
//經過$ref打標記,訪問子組件
console.log(
this
.$refs.f1.msg);
this
.$refs.f1.getParent();
},
},
components:{
'firstchild'
:{
template:
'#childOne'
,
data(){
return
{msg:
'這是第一個子組件'
};
},
methods:{
getParent(){
let a=1;
console.log(a);
alert(
this
.$parent.msg);
}
},
},
'secondchild'
:{
template:
'#childSec'
,
data(){
return
{msg:
"這是第二個組件"
};
}
}
}
}
}
});
</script>
|
2)使用父組件了
1
2
3
4
5
6
|
<
body
>
<
p
><
strong
>能夠經過$refs訪問父組件的子組件</
strong
></
p
>
<
div
id
=
"app"
>
<
parent-component
></
parent-component
>
</
div
>
</
body
>
|
值得注意的是vue2,相比vue1,丟棄了一些東西。
總結一下:
1)組件只能一個根節點
2)能夠在自組件中使用this.$parent.屬性值,或者函數
3)在父組件中能夠使用this.$refs.組件的標記 訪問子組件,或者this.$children[i].屬性,,訪問子組件的
4)你須要注意this的指向