File tree Expand file tree Collapse file tree 4 files changed +54
-16
lines changed Expand file tree Collapse file tree 4 files changed +54
-16
lines changed Original file line number Diff line number Diff line change 1
1
<template >
2
2
<div >
3
- <app-header ></app-header >
4
- <app-ninjas ></app-ninjas >
5
- <app-footer ></app-footer >
3
+ <app-header v-bind:title =" title" v-on:changeTitle =" updateTitle($event)" ></app-header >
4
+ <app-ninjas v-bind:ninjas =" ninjas" ></app-ninjas >
5
+ <ul >
6
+ <li v-for =" ninja in ninjas" >{{ ninja.name }}</li >
7
+ </ul >
8
+ <app-footer v-bind:title =" title" ></app-footer >
6
9
</div >
7
10
</template >
8
11
@@ -20,8 +23,21 @@ export default {
20
23
},
21
24
data () {
22
25
return {
23
-
26
+ ninjas: [
27
+ {name: ' Ryu' , speciality: ' Vue Components' , show: false },
28
+ {name: ' Crystal' , speciality: ' HTML Wizardry' , show: false },
29
+ {name: ' Hitoshi' , speciality: ' Click Events' , show: false },
30
+ {name: ' Tango' , speciality: ' Conditionals' , show: false },
31
+ {name: ' Kami' , speciality: ' Webpack' , show: false },
32
+ {name: ' Yoshi' , speciality: ' Data Diggin' , show: false }
33
+ ],
34
+ title: ' Vue Wizards'
24
35
}
36
+ },
37
+ methods: {
38
+ updateTitle : function (updatedTitle ){
39
+ this .title = updatedTitle;
40
+ }
25
41
}
26
42
}
27
43
</script >
Original file line number Diff line number Diff line change 1
1
<template >
2
2
<footer >
3
- <p >{{ copyright }}</p >
3
+ <p >Copyright 2017 {{ title }}</p >
4
4
</footer >
5
5
</template >
6
6
<script >
7
7
export default {
8
+ props: {
9
+ title: {
10
+ type: String ,
11
+ required: true
12
+ }
13
+ },
8
14
data (){
9
15
return {
10
- copyright : ' Copyright 2017 Vue Ninjas '
16
+
11
17
}
12
18
}
13
19
}
Original file line number Diff line number Diff line change 1
1
<template >
2
2
<header >
3
- <h1 >{{ title }}</h1 >
3
+ <h1 v-on:click = " changeTitle " >{{ title }}</h1 >
4
4
</header >
5
5
</template >
6
6
<script >
7
7
export default {
8
+ props: {
9
+ title: {
10
+ type: String ,
11
+ required: true
12
+ }
13
+ },
8
14
data (){
9
15
return {
10
- title : ' Vue Ninjas '
16
+
11
17
}
18
+ },
19
+ methods: {
20
+ changeTitle : function (){
21
+ this .$emit (' changeTitle' , ' Vue Ninjas' );
22
+ }
12
23
}
13
24
}
14
25
</script >
Original file line number Diff line number Diff line change 6
6
<h3 v-show =" ninja.show" >{{ ninja.speciality }}</h3 >
7
7
</li >
8
8
</ul >
9
+ <button v-on:click =" deleteNinja" >Delete a Ninja</button >
9
10
</div >
10
11
</template >
11
12
<script >
12
13
export default {
14
+ props: {
15
+ ninjas: {
16
+ type: Array ,
17
+ required: true
18
+ }
19
+ },
13
20
data (){
14
21
return {
15
- ninjas: [
16
- {name: ' Ryu' , speciality: ' Vue Components' , show: false },
17
- {name: ' Crystal' , speciality: ' HTML Wizardry' , show: false },
18
- {name: ' Hitoshi' , speciality: ' Click Events' , show: false },
19
- {name: ' Tango' , speciality: ' Conditionals' , show: false },
20
- {name: ' Kami' , speciality: ' Webpack' , show: false },
21
- {name: ' Yoshi' , speciality: ' Data Diggin' , show: false }
22
- ]
22
+
23
23
}
24
+ },
25
+ methods: {
26
+ deleteNinja : function (){
27
+ this .ninjas .pop ();
28
+ }
24
29
}
25
30
}
26
31
</script >
You can’t perform that action at this time.
0 commit comments