File tree Expand file tree Collapse file tree 2 files changed +64
-20
lines changed Expand file tree Collapse file tree 2 files changed +64
-20
lines changed Original file line number Diff line number Diff line change
1
+ <template >
2
+ <div class =" form-group" >
3
+ <label >{{ label }}</label >
4
+ <input
5
+ :value =" subject"
6
+ @input =" onInput"
7
+ type =" text"
8
+ class =" form-control"
9
+ >
10
+ <div
11
+ v-if =" error"
12
+ class =" text-red"
13
+ >
14
+ {{ error }}
15
+ </div >
16
+ </div >
17
+ </template >
18
+
19
+ <script >
20
+ export default {
21
+ props: {
22
+ label: {
23
+ type: String ,
24
+ required: true
25
+ },
26
+ error: {
27
+ type: String ,
28
+ required: true
29
+ },
30
+ subject: {
31
+ type: String ,
32
+ required: true
33
+ }
34
+ },
35
+ setup (props , { emit }) {
36
+ const onInput = (e ) => {
37
+ emit (' update:subject' , e .target .value );
38
+ };
39
+
40
+ return {
41
+ onInput
42
+ }
43
+ }
44
+ }
45
+ </script >
46
+
47
+ <style scoped>
48
+ .text-red {
49
+ color : red ;
50
+ }
51
+ </style >
Original file line number Diff line number Diff line change 8
8
>
9
9
<div class =" row" >
10
10
<div class =" col-6" >
11
- <div class =" form-group" >
12
- <label >Subject</label >
13
- <input
14
- v-model =" todo.subject"
15
- type =" text"
16
- class =" form-control"
17
- >
18
- <div
19
- v-if =" subjectError"
20
- class =" text-red"
21
- >
22
- {{subjectError}}
23
- </div >
24
- </div >
11
+ <Input
12
+ label =" Subject"
13
+ v-model:subject =" todo.subject"
14
+ :error =" subjectError"
15
+ />
25
16
</div >
26
17
<div v-if =" editing" class =" col-6" >
27
18
<div class =" form-group" >
72
63
<script >
73
64
import { useRoute , useRouter } from ' vue-router' ;
74
65
import axios from ' axios' ;
75
- import { ref , computed } from ' vue' ;
66
+ import { ref , computed , onUpdated } from ' vue' ;
76
67
import _ from ' lodash' ;
77
68
import Toast from ' @/components/Toast.vue' ;
78
69
import { useToast } from ' @/composables/toast' ;
70
+ import Input from ' @/components/Input.vue' ;
79
71
80
72
export default {
81
73
components: {
82
- Toast
74
+ Toast,
75
+ Input
83
76
},
84
77
props: {
85
78
editing: {
@@ -95,6 +88,9 @@ export default {
95
88
completed: false ,
96
89
body: ' '
97
90
});
91
+ onUpdated (() => {
92
+ console .log (todo .value .subject )
93
+ })
98
94
const subjectError = ref (' ' );
99
95
const originalTodo = ref (null );
100
96
const loading = ref (false );
@@ -105,7 +101,7 @@ export default {
105
101
triggerToast
106
102
} = useToast ();
107
103
108
- const todoId = route .params .id
104
+ const todoId = route .params .id
109
105
110
106
const getTodo = async () => {
111
107
loading .value = true ;
@@ -195,9 +191,6 @@ export default {
195
191
</script >
196
192
197
193
<style scoped>
198
- .text-red {
199
- color : red ;
200
- }
201
194
202
195
.fade-enter-active ,
203
196
.fade-leave-active {
You can’t perform that action at this time.
0 commit comments