Skip to content

Commit c446386

Browse files
committed
form.md
1 parent 559322f commit c446386

File tree

1 file changed

+99
-96
lines changed

1 file changed

+99
-96
lines changed

learn-vue-official-website/vuejs2-form.md

Lines changed: 99 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11

22

33
# 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)
710

811

912
# 2. 文本 textbox
10-
## VUEX
13+
### VUEX
1114

1215
```js
1316
<input :value="message" @input="updateMessage">
@@ -40,14 +43,14 @@
4043
}
4144
```
4245

43-
## 不用 vuex
46+
### 不用 vuex
4447

4548
```js
4649
<input v-model="dom" placeholder="edit me">
4750
<p>Message is: {{ dom }}</p>
4851
```
4952

50-
### 修饰符 .lazy
53+
#### 修饰符 .lazy
5154
- 在默认情况下, v-model 在 input 事件中同步输入框的值与数据
5255
- 但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:
5356

@@ -56,7 +59,7 @@
5659
<input v-model.lazy="msg" >
5760
```
5861

59-
### 修饰符 .number
62+
#### 修饰符 .number
6063
- 如果想自动将用户的输入值转为 Number 类型
6164
- (如果原值的转换结果为 NaN 则返回原值)
6265
- 可以添加一个修饰符 number 给 v-model 来处理输入值:
@@ -67,7 +70,7 @@
6770

6871
- 这通常很有用,因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型。
6972

70-
### 修饰符 .trim
73+
#### 修饰符 .trim
7174

7275
- 如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:
7376

@@ -78,21 +81,21 @@
7881

7982
# 3. 多行文本 textarea
8083

81-
- 在文本区域插值( <textarea></textarea> ) 并不会生效,应用 v-model 来代替
84+
在文本区域插值( <textarea></textarea> ) 并不会生效,应用 v-model 来代替
8285

8386
```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>
8891
```
8992

9093

9194
# 4. 单勾框 checkbox
9295

9396
```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>
9699
```
97100

98101
- 特别:
@@ -102,31 +105,31 @@
102105
- 并且这个属性的值可以不是字符串。
103106

104107
```js
105-
<!-- `toggle`truefalse -->
106-
<input type="checkbox" v-model="toggle">
108+
<!-- `toggle`truefalse -->
109+
<input type="checkbox" v-model="toggle">
107110
```
108111

109112

110113
# 5. 多勾框 checkbox
111-
## data,要有 数组 []
114+
### data,要有 数组 []
112115

113116
```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+
})
130133
```
131134

132135
- 特别:
@@ -137,98 +140,98 @@ new Vue({
137140

138141
```js
139142

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
149152

150153
```
151154

152155

153156
# 6. 单选框 radio
154157

155158
```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>
163166
```
164167

165168

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+
特别:
185170

171+
对于单选按钮,勾选框及选择列表选项
186172

173+
- v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值):
187174

175+
- 但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
188176

177+
- 这时可以用 v-bind 实现
189178

179+
- v-bind:value="vue data value"
190180

181+
- 并且这个属性的值可以不是字符串。
191182

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+
```
192190

193191
# 7. 单选列表 select
194192

195193
```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>
202200
```
203201

204-
- 特别:
205-
- 但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
202+
特别:
203+
204+
205+
但是有时我们想绑定 value 到 Vue 实例的一个动态属性上
206+
206207
- 这时可以用 v-bind 实现
208+
207209
- v-bind:value="vue data value"
210+
208211
- 并且这个属性的值可以不是字符串。
209212

210213
```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>
215218
```
216219

217220
---------------------------
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+
```
227230

228231

229232

230233
# 8. 多选列表 select
231-
## data (绑定到一个数组)
234+
### data (绑定到一个数组)
232235

233236
```js
234237

@@ -254,12 +257,12 @@ new Vue({
254257

255258
```
256259

257-
# 日期 vue-flatpickr (9):
260+
# 9. 日期 plugins / vue-flatpickr
258261

259-
## https://github.com/jrainlau/vue-flatpickr
262+
### https://github.com/jrainlau/vue-flatpickr
260263
npm install vue-flatpickr
261264

262-
## .vue script
265+
### .vue script
263266

264267
```js
265268
<script>
@@ -286,7 +289,7 @@ new Vue({
286289
</script>
287290
```
288291

289-
## .vue template
292+
### .vue template
290293

291294
```js
292295
<template>
@@ -297,7 +300,7 @@ new Vue({
297300
</template>
298301
```
299302

300-
## Data binding
303+
### Data binding
301304

302305
```js
303306
The <Flatpickr /> tag could be use as a normal <input> tag

0 commit comments

Comments
 (0)