vue.js - 如何为 VueJS 组件创建 v-model 修饰符?

标签 vue.js

在 VueJS 中有一些 v-model修改预解析绑定(bind)值,例如 v-model.trim从字符串中删除空格。

如何创建自己的修饰符?例如 v-model.myparse今天嗯使用类似的东西:

computed: {
  name: {
    get: function () { return parse(this._name);},
    set: function (value) { _name = parse(value);}
  }

什么很冗长。

我希望它可以重复使用以执行以下操作:
<input v-model.myparse="name" name='n1'/>
<input v-model.myparse="name" name='n2'/>
<input v-model.myparse="name" name='n3'/>
<input v-model.myparse="name" name='n4'/>

使用 setter 计算属性似乎完成了部分工作,但它仅对一些变量非常有用,它变得非常冗长,有很多属性。

最佳答案

一、添加添加自定义修改为v-modeldiscussion 下但尚未实现。

如果已实现,您可以扩展 v-model并为其添加修饰符。

由于这是不可能的,您还有几个选择,其中之一是使用 :value而不是 v 模型。因为v-model只是以下的语法糖:

  <input type="text" :value="message" @input="message = $event.target.value">

上面的代码与以下代码相同:
  <input type="text" v-model="message">

所以,我建议你替换 @input 的逻辑。像这样:

现在,您可以使用函数将修改后的值返回为:
methods: {
  getModel ($event) {
    return $event.target.value.trim()
  } 
}

但是我提到的所有内容仍然可以通过 v-model 完成。如果你使用一个函数。

当然不用说了,你可以自己创建custom directive还。

关于vue.js - 如何为 VueJS 组件创建 v-model 修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590952/

相关文章:

typescript - 什么! : mean in Typescript?

javascript - 如何将数据传递给已在default.vue中声明的组件并从其他页面调用?

ajax - 通过 WP REST API 创建评论时会收到电子邮件通知

javascript - 由于 webpack import outport,Vuejs eventbus 触发多次?

ajax - 更新 Vue 数据对象关闭 AJAX 响应

javascript - 页面打开时表单自动提交

vue.js - 在 Vue JS 中使用 v-for 发送组件的 props

vue.js - 在 Vue 中重新渲染组件的最简洁方法

node.js - 如何将vuejs项目部署到heroku

vue.js - 使用Vue在单文件组件中调用render方法