当前位置: 首页 > Web前端 > vue.js

关于Vuev-model你需要知道的一切

时间:2023-03-31 18:21:36 vue.js

v-model是一个Vue指令,它提供输入和表单数据之间或两个组件之间的双向数据绑定。这是Vue开发中的一个简单概念,但v-model的真正威力需要一些时间才能理解。在本教程结束时,您将了解v-model的所有不同用例,并学习如何在您自己的项目中使用它。准备好?我也是。让我们编写代码。什么是v模型?正如我们刚刚讨论的,v-model是一个我们可以在模板代码中使用的指令。指令是一个模板标记,它告诉Vue我们要如何处理DOM。v-model告诉Vue我们要在模板中的值和数据属性中的值之间创建双向数据绑定。使用v-model的一个常见用例是在设计表单和输入时。我们可以使用它来启用D??OM输入元素来修改Vue实例中的数据。让我们看一个在文本输入上使用v-model的简单示例。当我们输入文本输入时,我们将看到我们的数据属性发生变化。v-model和v-bind有什么区别?v-bind指令通常与v-model切换。两者的区别在于v-model提供了双向数据绑定。在我们的例子中,这意味着如果我们的数据发生变化,我们的输入也会发生变化,如果我们的输入发生变化,我们的数据也会发生变化。但是,v-bind仅以一种方式绑定数据。当您在应用程序中创建清晰的单向数据流时,这很有用。但是,在v-model和v-bind之间进行选择时必须小心。v-model的修饰符Vue提供了两个修饰符,允许我们更改v-model的功能。每一个都可以这样加起来,甚至连在一起。.lazy默认情况下,v-model在每个输入事件上与Vue实例(数据属性)的状态同步。这包括获得、失去注意力等等。lazy修饰符修改我们的v-model,因此它仅在更改事件发生后同步。这减少了v-model尝试与Vue实例同步的次数-在某些情况下,还提高了性能。.nu??mber通常情况下,我们的输入会自动将输入转换为字符串——即使我们输入的是数字。确保值被视为数字的一种方法是使用.number修饰符。根据Vue文档,如果输入发生变化,并且parseFloat()无法解析新值,那么将返回输入的最后一个有效值。.trim与大多数编程语言中的trim方法类似,.trim修饰符在返回值之前删除前导或尾随空格。在自定义组件中使用v-model好了,现在我们已经了解了v-modelinsideform/input的基础知识,让我们来看看v-model的一个有趣的用法——创建组件之间的双向数据绑定。在Vue中,数据绑定有两个主要步骤:从父节点传递数据,从子组件发出事件以更新父组件,在自定义组件上使用v-model允许我们传递一个prop,带有一个指令来处理一个事件。好吧,这到底是什么意思?让我们继续v-model表单示例并使用名为CustomTextInput.vue的自定义文本输入。使用v-model传递的值的默认名称是modelValue-我们将在示例中使用这个名称。但是,我们可以像这样传递自定义模型名称。注意:当我们使用自定义模型name:name时,发出的方法的名称将被更新这里是Vue文档中的一张图片来总结它。我们已经在自定义组件中使用v-model设置了父组件,所以让我们从子组件访问它。在CustomTextInput.vue中,我们必须做两件事:接受我们的v-model值作为一个道具当我们的输入改变时触发一个更新事件好的-让我们首先在脚本中将其声明为一个道具。exportdefault{props:{modelValue:String,}}接下来,让我们创建模板,将值设置为modelValueprop,每当有输入事件时,我们都会通过update:modelValue发出新值。使用v-model好吧!我们已经介绍了使用v-model在两个组件之间绑定数据的基本示例。让我们看看使用v-model指令的一些更高级的方法。对一个组件v-model多次使用v-model并不限于每个组件只能使用一次。要多次使用v-model,我们只需要确保为每个prop命名并在子组件中正确访问它。让我们在lastName中添加第二个v-model。在我们的父组件中:然后,在子组件内部:V-model的自定义修饰符正如我们所讨论的,Vue中内置了一些修饰符,但总有一天,我们会想要添加自己的修饰符。假设我们要创建一个从输入中删除所有空格的修饰符。我们称之为无空格。在我们的输入组件中,我们可以使用props来捕获修饰符。自定义修饰符的名称是nameModifiers。props:{lastName:String,modelValue:String,modelModifiers:{default:()=>({})}}好的,我们需要做的第一件事是更改@input处理程序以使用自定义方法。我们可以将其称为emitValue,它将接受正在编辑的属性的名称和事件对象。在emitValue方法中,调用Before$emit,我们检查修饰符。如果no-whitespace修饰符为真,则可以在将值发送给父级之前对其进行修改。emitValue(propName,evt){letval=evt.target.valueif(this.modelModifiers['no-whitespace']){val=val.replace(/s/g,'')}this.$emit(`update:${propName}`,val)}结论希望你学到了一些关于v-model的新东西。在表单和输入数据等基本用例中,v-model是一个非常简单的概念。然而,当我们开始创建自定义组件和处理更复杂的数据时,我们才能真正了解v-model。欢迎关注我的公众号。如果你有喜欢的外文技术文章,可以通过公众号留言推荐给我。