1
1
2
2
3
3
# 1. v-model 特性
4
- - v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值。
5
- - v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。
6
- - 严格模式下的Vuex,在属于 Vuex 的 state (状态)上使用 v-model时会比较棘手(就是 vuex 不爱 v-model)
4
+
5
+ v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值。
6
+
7
+ v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。
8
+
9
+ 严格模式下的Vuex,在属于 Vuex 的 state (状态)上使用 v-model时会比较棘手(就是 vuex 不爱 v-model)
7
10
8
11
9
12
# 2. 文本 textbox
10
- ## VUEX
13
+ ### VUEX
11
14
12
15
``` js
13
16
< input : value= " message" @input= " updateMessage" >
40
43
}
41
44
```
42
45
43
- ## 不用 vuex
46
+ ### 不用 vuex
44
47
45
48
``` js
46
49
< input v- model= " dom" placeholder= " edit me" >
47
50
< p> Message is: {{ dom }}< / p>
48
51
```
49
52
50
- ### 修饰符 .lazy
53
+ #### 修饰符 .lazy
51
54
- 在默认情况下, v-model 在 input 事件中同步输入框的值与数据
52
55
- 但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:
53
56
56
59
< input v- model .lazy = " msg" >
57
60
```
58
61
59
- ### 修饰符 .number
62
+ #### 修饰符 .number
60
63
- 如果想自动将用户的输入值转为 Number 类型
61
64
- (如果原值的转换结果为 NaN 则返回原值)
62
65
- 可以添加一个修饰符 number 给 v-model 来处理输入值:
67
70
68
71
- 这通常很有用,因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型。
69
72
70
- ### 修饰符 .trim
73
+ #### 修饰符 .trim
71
74
72
75
- 如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:
73
76
78
81
79
82
# 3. 多行文本 textarea
80
83
81
- - 在文本区域插值( <textarea ></textarea > ) 并不会生效,应用 v-model 来代替
84
+ 在文本区域插值( <textarea></textarea> ) 并不会生效,应用 v-model 来代替
82
85
83
86
``` js
84
- < span> Multiline message is: < / span>
85
- < p style= " white-space: pre" > {{ dom }}< / p>
86
- < br>
87
- < textarea v- model= " dom" placeholder= " add multiple lines" >< / textarea>
87
+ < span> Multiline message is: < / span>
88
+ < p style= " white-space: pre" > {{ dom }}< / p>
89
+ < br>
90
+ < textarea v- model= " dom" placeholder= " add multiple lines" >< / textarea>
88
91
```
89
92
90
93
91
94
# 4. 单勾框 checkbox
92
95
93
96
``` js
94
- < input type= " checkbox" id= " checkbox" v- model= " checked" >
95
- < label for = " checkbox" > {{ checked }}< / label>
97
+ < input type= " checkbox" id= " checkbox" v- model= " checked" >
98
+ < label for = " checkbox" > {{ checked }}< / label>
96
99
```
97
100
98
101
- 特别:
102
105
- 并且这个属性的值可以不是字符串。
103
106
104
107
``` js
105
- <!-- ` toggle` 为 true 或 false -->
106
- < input type= " checkbox" v- model= " toggle" >
108
+ <!-- ` toggle` 为 true 或 false -->
109
+ < input type= " checkbox" v- model= " toggle" >
107
110
```
108
111
109
112
110
113
# 5. 多勾框 checkbox
111
- ## data,要有 数组 [ ]
114
+ ### data,要有 数组 [ ]
112
115
113
116
``` js
114
- < input type= " checkbox" id= " jack" value= " Jack" v- model= " dom" >
115
- < label for = " jack" > Jack< / label>
116
- < input type= " checkbox" id= " john" value= " John" v- model= " dom" >
117
- < label for = " john" > John< / label>
118
- < input type= " checkbox" id= " mike" value= " Mike" v- model= " dom" >
119
- < label for = " mike" > Mike< / label>
120
- < br>
121
- < span> Checked names: {{ dom }}< / span>
122
-
123
-
124
- new Vue ({
125
- el: ' ...' ,
126
- data: {
127
- dom: []
128
- }
129
- })
117
+ < input type= " checkbox" id= " jack" value= " Jack" v- model= " dom" >
118
+ < label for = " jack" > Jack< / label>
119
+ < input type= " checkbox" id= " john" value= " John" v- model= " dom" >
120
+ < label for = " john" > John< / label>
121
+ < input type= " checkbox" id= " mike" value= " Mike" v- model= " dom" >
122
+ < label for = " mike" > Mike< / label>
123
+ < br>
124
+ < span> Checked names: {{ dom }}< / span>
125
+
126
+
127
+ new Vue ({
128
+ el: ' ...' ,
129
+ data: {
130
+ dom: []
131
+ }
132
+ })
130
133
```
131
134
132
135
- 特别:
@@ -137,98 +140,98 @@ new Vue({
137
140
138
141
``` js
139
142
140
- < input
141
- type= " checkbox"
142
- v- model= " toggle"
143
- v- bind: true - value= " a"
144
- v- bind: false - value= " b" >
145
- // 当选中时
146
- vm .toggle === vm .a
147
- // 当没有选中时
148
- vm .toggle === vm .b
143
+ < input
144
+ type= " checkbox"
145
+ v- model= " toggle"
146
+ v- bind: true - value= " a"
147
+ v- bind: false - value= " b" >
148
+ // 当选中时
149
+ vm .toggle === vm .a
150
+ // 当没有选中时
151
+ vm .toggle === vm .b
149
152
150
153
```
151
154
152
155
153
156
# 6. 单选框 radio
154
157
155
158
``` js
156
- < input type= " radio" id= " one" value= " One" v- model= " dom" >
157
- < label for = " one" > One< / label>
158
- < br>
159
- < input type= " radio" id= " two" value= " Two" v- model= " dom" >
160
- < label for = " two" > Two< / label>
161
- < br>
162
- < span> dom: {{ dom }}< / span>
159
+ < input type= " radio" id= " one" value= " One" v- model= " dom" >
160
+ < label for = " one" > One< / label>
161
+ < br>
162
+ < input type= " radio" id= " two" value= " Two" v- model= " dom" >
163
+ < label for = " two" > Two< / label>
164
+ < br>
165
+ < span> dom: {{ dom }}< / span>
163
166
```
164
167
165
168
166
- - 特别:
167
- - 对于单选按钮,勾选框及选择列表选项
168
- - v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值):
169
- - 但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
170
- - 这时可以用 v-bind 实现
171
- - v-bind: value ="vue data value"
172
- - 并且这个属性的值可以不是字符串。
173
-
174
- ``` js
175
- <!-- 当选中时,` picked` 为字符串 " a" -->
176
- < input type= " radio" v- model= " picked" value= " a" >
177
-
178
- < input type= " radio" v- model= " pick" v- bind: value= " a" >
179
- // 当选中时
180
- vm .pick === vm .a
181
- ` ` ` js
182
-
183
-
184
-
169
+ 特别:
185
170
171
+ 对于单选按钮,勾选框及选择列表选项
186
172
173
+ - v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值):
187
174
175
+ - 但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
188
176
177
+ - 这时可以用 v-bind 实现
189
178
179
+ - v-bind: value ="vue data value"
190
180
181
+ - 并且这个属性的值可以不是字符串。
191
182
183
+ ```
184
+ <!-- 当选中时,`picked` 为字符串 "a" -->
185
+ <input type="radio" v-model="picked" value="a">
186
+ <input type="radio" v-model="pick" v-bind:value="a">
187
+ // 当选中时
188
+ vm.pick === vm.a
189
+ ```
192
190
193
191
# 7. 单选列表 select
194
192
195
193
``` js
196
- < select v- model= " dom" >
197
- < option> A < / option>
198
- < option> B < / option>
199
- < option> C < / option>
200
- < / select>
201
- < span> dom: {{ dom }}< / span>
194
+ < select v- model= " dom" >
195
+ < option> A < / option>
196
+ < option> B < / option>
197
+ < option> C < / option>
198
+ < / select>
199
+ < span> dom: {{ dom }}< / span>
202
200
```
203
201
204
- - 特别:
205
- - 但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
202
+ 特别:
203
+
204
+
205
+ 但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
206
+
206
207
- 这时可以用 v-bind 实现
208
+
207
209
- v-bind: value ="vue data value"
210
+
208
211
- 并且这个属性的值可以不是字符串。
209
212
210
213
``` js
211
- <!-- 当选中时,` selected` 为字符串 " abc" -->
212
- < select v- model= " selected" >
213
- < option value= " abc" > ABC < / option>
214
- < / select>
214
+ <!-- 当选中时,` selected` 为字符串 " abc" -->
215
+ < select v- model= " selected" >
216
+ < option value= " abc" > ABC < / option>
217
+ < / select>
215
218
```
216
219
217
220
---------------------------
218
-
219
- <select v-model =" selected " >
220
- <!-- 内联对象字面量 -->
221
- <option v-bind:value =" { number: 123 } " >123</option >
222
- </select >
223
- // 当选中时
224
- typeof vm.selected // -> 'object'
225
- vm.selected.number // -> 123
226
-
221
+ ```
222
+ <select v-model="selected">
223
+ <!-- 内联对象字面量 -->
224
+ <option v-bind:value="{ number: 123 }">123</option>
225
+ </select>
226
+ // 当选中时
227
+ typeof vm.selected // -> 'object'
228
+ vm.selected.number // -> 123
229
+ ```
227
230
228
231
229
232
230
233
# 8. 多选列表 select
231
- ## data (绑定到一个数组)
234
+ ### data (绑定到一个数组)
232
235
233
236
``` js
234
237
@@ -254,12 +257,12 @@ new Vue({
254
257
255
258
```
256
259
257
- # 日期 vue-flatpickr (9):
260
+ # 9. 日期 plugins / vue-flatpickr
258
261
259
- ## https://github.com/jrainlau/vue-flatpickr
262
+ ### https://github.com/jrainlau/vue-flatpickr
260
263
npm install vue-flatpickr
261
264
262
- ## .vue script
265
+ ### .vue script
263
266
264
267
``` js
265
268
< script>
@@ -286,7 +289,7 @@ new Vue({
286
289
< / script>
287
290
```
288
291
289
- ## .vue template
292
+ ### .vue template
290
293
291
294
``` js
292
295
< template>
@@ -297,7 +300,7 @@ new Vue({
297
300
< / template>
298
301
```
299
302
300
- ## Data binding
303
+ ### Data binding
301
304
302
305
``` js
303
306
The < Flatpickr / > tag could be use as a normal < input> tag
0 commit comments