在 Vue.js 中使用 v 模型实现双向绑定

Vue 的双向绑定系统采用了开发 Web 应用程序最棘手的部分之一,即用户输入同步,并使它与 v-model 非常简单,v-model 指令更新模板每次模型更改时,更新数据模型每次模板更改时。

双向绑定是一个强大的功能,如果正确使用,可以显著加快开发过程,从而减少保持用户输入与应用程序数据模型一致的复杂性。

在Vue中,使用V模型指令实现双向束缚。

约束文本输入元素

若要将输入元素的值绑定到组件数据的属性,请使用`v-model="dataProperty``。

以下是组件的数据方法:

1data() {
2  return {
3    existentialQuestion: 'Am I truly an alligator?'  
4  };
5}

还有寺庙:

1<h2>My deepest, darkest question: {{existentialQuestion}}</h2>
2<input v-model="existentialQuestion"/>

这是一个实时演示: [codepen alligatorio poyLjqY]

注意输入值开始为我是真正的鱼吗?但当您更改输入时,存在性问题属性(和 h2 元素)将实时更新。

连接到检查盒和无线电按钮

检查箱和无线电按钮几乎就像输入元素一样工作. 检查箱绑定要么是,而无线电按钮绑定将无论其价值属性的内容是什么。

此外,一组检查框可以绑定到单个数组中,如果检查,将其值属性的内容放入数组中。

单个检查箱示例

组件数据...

1data() {
2  return {
3    statementIsTrue: true  
4  };
5}

...和寺庙

1<p>You have decided this statement is {{statementIsTrue}}</p>
2<label>
3  <input type="checkbox" v-model="statementIsTrue"/>
4  Is this statement true?
5</label>

...并试试直播: [codepen alligatorio abNYvxd]

多个检查盒的例子

组件数据...

1data() {
2  return {
3    namesThatRhyme: []  
4  };
5}

...和寺庙

 1<p>A list of names that rhyme: {{namesThatRhyme.join(', ')}}</p>
 2<label>
 3  <input type="checkbox" value="Daniel" v-model="namesThatRhyme"/>
 4  Daniel
 5</label>
 6<label>
 7  <input type="checkbox" value="Nathaniel" v-model="namesThatRhyme"/>
 8  Nathaniel
 9</label>
10<label>
11  <input type="checkbox" value="Hubert" v-model="namesThatRhyme"/>
12  Hubert
13</label>

...和演示: [codepen alligatorio NWNYGZE]

广播按钮示例

组件数据...

1data() {
2    return {
3      howAreYouFeeling: "great"
4    };
5  }

...和寺庙

 1<p>How are you feeling today?</p>
 2  <label>
 3    <input type="radio" value="great" v-model="howAreYouFeeling" />
 4    great
 5  </label>
 6  <label>
 7    <input type="radio" value="wonderful" v-model="howAreYouFeeling" />
 8    wonderful
 9  </label>
10  <label>
11    <input type="radio" value="fantastic" v-model="howAreYouFeeling" />
12    fantastic
13  </label>
14  <p>I am also feeling <em>{{howAreYouFeeling}}</em> today.</p>

这是在一个演示: [codepen alligatorio gOreaVe]

笔记

  • 默认情况下,v-model 被评估每次输入事件被启动(即按键或粘贴) 如果您更愿意等到用户完成输入并无焦点,您可以使用 v-model.lazy 修改器来让 v-model 听取更改事件
  • 如果您想将用户输入投放到一个数字而不是一个字符串,请添加 v-model.number 修改器。 您将不得不自己处理投放到其他类型
  • v-model.trim 修改器将从绑定字符串中切断和引导或追踪 whitespace。 这(显然)不能与 v-model.number

一起使用(虽然 v-model="dataPerty"

Published At
Categories with 技术
Tagged with
comments powered by Disqus