vue .sync修饰符,vue中v-model作用

  vue .sync修饰符,vue中v-model作用

  在正常开发中,经常会用到一些亲子组件通信,比如props、vuex等。下面这篇文章主要介绍v-model和的区别的相关信息。vue里的同步修改器,有需要的可以参考一下。

  

目录

  前言1。垂直模式1。功能2。v-model 3的精髓。V-Model 2的特殊用法。1的功能。同步修改器2。sync修改器的本质总结。sync和V-Model的区别在于

  

前言

  在日常开发过程中,经常使用v-model指令。一般来说,v-model指令在表单元素上创建双向数据绑定,但v-model的本质是语法糖。但是说到语法糖,这里就不得不提另一个与v-model功能相似的双向绑定语法糖,就是.sync修饰符。下面是这两种用法的总结:

  

一、v-model

  

1. 作用

  相信用过vue框架的朋友不会对这个指令感到陌生。v-model用于双向绑定输入、textarea和select元素上的数据。

  例如:

  模板

  差异

  input-model= value type= text //这里的v-model中的值可以直接得到用户的输入值。

  /div

  /模板

  脚本

  从 @/yanshi/son.vue 导入儿子

  data() {

  返回{

  Value: //这里定义的Value变量可以直接操作上面得到的值。

  }

  }

  }

  /脚本

  当我们在输入输入框中输入一个现有的值时,我们可以直接获得我们的输入值,而不需要操作dom元素来获得它。

  

2.v-model的本质

  本质上,v型是一个语法糖

  目前,我们习惯性的写作方式如下:

  输入v-model=val type=text

  但本质上,完整的写作:

  input:value= val @ input= val=$ event . target . value /

  也可以在@input后面写一个函数,然后在方法中执行赋值操作。

  要理解这行代码,首先需要知道input元素本身有一个input事件,这是HTML5中新加入的,类似于onchange。每当输入框的内容发生变化时,就会触发输入事件,将最新的value值传递给val,从而完成双向数据绑定的效果。

  我们仔细观察语法糖和原始语法那两行代码,可以得出一个结论:

  在给input/element添加v-model属性时,val会默认作为元素的属性,然后输入事件会作为触发事件实时传递值。

  注意:不是所有能进行双向绑定的元素都是input事件。

  

3. v-model的特殊用法

  一般我们使用v-model主要是为了数据的双向绑定,获取用户的输入值非常方便。但是在一些特殊情况下,我们也可以使用v-model进行父子组件之间的双向数据绑定。这里需要用到父子价值转移的相关知识:

  模板

  差异

  son-model= num //使用子组件

  /div

  /模板

  脚本

  从 @/Yanshi/son . vue //导入子组件

  导出默认值{

  组件:{

  Son //寄存器子组件

  },

  data() {

  返回{

  数量:100

  }

  }

  }

  /脚本

  在这里,我们首先定义一个父组件和一个子组件,将子组件引入父组件,并将v-model绑定到子组件来传递值。此时,我们需要在son组件中接收这个值并使用它:

  模板

  差异

  是在我的儿子组件中接收的值:{{ value }}

  /div

  /模板

  脚本

  导出默认值{

  道具:{

  值:{

  类型:数量,

  必填:真

  }

  }

  }

  /脚本

  注意:我们这里收到的值必须是value,用其他名字写的时候不能用。

  一般情况下的父向子传值,子组件中是不能直接修改的,在这里我们在子组件中直接修改这个值会进行报错

  例如:

  模板

  差异

  是在我的儿子组件中接收的值:{{ value }}

  按钮@click=value=1 单击我的值1/按钮

  /div

  /模板

  错误信息

  当我们需要修改这个值时,我们需要将它传递给父组件进行修改。

  这就需要在父组件的子组件标签上定义一个自定义的事件,通过在子组件中使用$emit(自定义事件名,值)的方法将值传入父组件

  这里不能使用自定义事件,因为我们使用v-model来传递值,所以只能使用输入事件来修改。

  在父组件中定义一个@input方法,然后设置一个参数val来接收子组件的值。

  模板

  差异

  {{ num }}

  son v-model= num @ input= val=num=val /

  /div

  /模板

  在子组件中使用$emit()方法。调用父组件中的事件并传递值。

  模板

  差异

  是在我的儿子组件中接收的值:{{ value }}

  Button @ click= $ emit (input ,value1)单击我的值1/button

  /div

  /模板

  这样就可以完成父子组件之间的双向数据绑定效果,不会出现错误。

  

二、.sync修饰符

  

1. .sync修饰符作用

  与垂直模型相比,同步修改器要简单得多:

  .sync修饰符可以实现子组件与父组件的双向绑定,并且可以实现子组件同步修改父组件的值。

  

2. .sync修饰符本质

  //正常亲子传播:

  son :a=num :b=num2/son

  //添加sync后,父级传递给子级:

  son:a . sync= num b . sync= num 2 /son

  //它相当于

  儿子

  :a=num @update:a=val=num=val

  :b= num 2 @ update:b= val=num 2=val /son

  //相当于多了一个事件监视器。事件名称为update: a .在回调函数中,接收到的值将被赋给由属性绑定的数据项。

  在这里传递值和从正常的父节点接收值给子节点没有区别。唯一的区别是,在传回值时,$emit调用的事件名必须是update: attribute name。如果事件名称写得不正确,它不会报告错误,但不会改变任何事情。这需要更多的关注。

  

总结

  

.sync与v-model区别是

  相同点:两者都是语法糖,可以实现亲子组件中数据的双向交流。

  区别点:不同的格式:v-model="num ",num.sync="num "

  垂直模型:@输入值

  :数量.同步:@更新:数量

  另外需要特别注意的是:v-model只能用一次;.sync可以有多个。

  关于v-model和的区别这篇文章就到这里了。vue中的同步修改器。有关v-model和之间差异的更多信息。同步修改器,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: