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

2024-05-26

在VueJS中有一些v-model修改预解析绑定值,例如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'/>

使用设置器计算的属性似乎完成了部分工作,但它仅对少数几个变量非常有用,对于很多属性它会变得非常冗长。


首先添加添加自定义修改为v-model在下面讨论 https://github.com/vuejs/vue/issues/3666但尚未实施。

如果实施的话,您可以延长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如果你使用一个函数。

当然,不用说,您可以创建自己的自定义指令 https://v2.vuejs.org/v2/guide/custom-directive.html also.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 VueJS 组件创建 v-model 修饰符? 的相关文章

随机推荐

  • Django 模型实例是否可哈希?

    Django 模型实例是否可哈希 例如 我可以使用 Django 模型实例作为字典键 或者创建一组唯一的模型吗 如果它们是可哈希的 那么是什么导致两个 Django 模型实例被认为是相同的 它是否天真地实现了 Hashable 以便仅当它们
  • 在Python中将列表附加到自身[重复]

    这个问题在这里已经有答案了 我想将一个列表附加到自身 我认为这会起作用 x 1 2 y x extend x print y 我想回来 1 2 1 2 但我得到的只是内置的None 我究竟做错了什么 我正在使用Python v2 6 x e
  • Flutter VideoPlayer 无法播放 YouTube 视频

    我正在开发 flutter 应用程序并使用 ext video player 播放 YouTube 视频 当我在视频播放器上播放频道视频时 它不起作用 但我添加了 YouTube 上的任何视频 播放器正在工作 为什么会发生这样的事 impo
  • Flutter getter 没有为类指定,当指定时

    我越来越 dart 没有为该类定义 getter currentPickup PickupEvent undefined getter event currentPickup 错误 import dart async import pack
  • 无法登录 mediawiki:为了防止会话劫持而取消?

    我多年来一直使用托管在 AWS EC2 实例上的私有 mediawiki 我认为某些扩展出了问题 特别是在数学渲染过程中停止了 所以我尝试使用 Google Chrome 浏览器重新加载页面 缓存全部被删除 之后 我无法登录并看到此消息 您
  • 在设置/重置位方面,“分支”意味着什么?

    在一次采访中 我被问到 你如何设置或重置一点 这是一个很简单的问题 我也回答了 之后 他们问我如何做同样的事情 但不分支 我不知道什么是分支 我搜索并发现位摆弄黑客 http graphics stanford edu 7Eseander
  • Visual Studio 2010:如何重新映射 F2 来重命名文件而不是打开对象浏览器

    In Visual Studio 2010 Solution Explorer tree view how can I remap the F2 key to Rename the Selected File rather than ope
  • 为什么这个 chrome.browserAction.setIcon 方法不起作用?

    我正在查看文档页面 https developer chrome com extensions browserAction method setIcon我不知道我的代码有什么问题 chrome browserAction setIcon d
  • j2me中读取文件内容

    我有一个如下所示的文件 OrderNo id name count Format 1 AA1 sdflsdfsdfd 12 01 2 AB2 asdaewqrftr 13 02 3 AA3 aerefytrsu 12 01 我想读取这个文件
  • 如何递归地将嵌套对象数组转换为平面对象数组?

    我有以下深度嵌套对象数组 const data name foo children count 1 name A count 2 name B name bar children count 3 name C children count
  • 如何仅将 dist 文件夹部署到 azure 网站?

    我的 azure 网站项目中有 src 文件和 dist 文件夹 project src dist 默认行为上传项目内的所有文件 即 src 和 dist website src dist 我想保持网站干净 只包含 dist 文件 webs
  • 使用后退/前进按钮时,将页面重定向到自定义页面,而不是默认显示“网页已过期”

    我正忙于一个只有一个页面的网站 只有登录后才能访问 home jsp 一旦用户使用有效会话登录 如果他按下浏览器上的后退按钮 那么他应该被重定向到login jsp如果他按下浏览器的前进按钮 则会再次出现 他应该无法到达home jsp所以
  • 具有自定义值类型的 map::emplace()

    我使用时遇到问题map emplace 谁能帮我找出正确的语法来使用 我实际上正在尝试做同样的事情这个例子 http www cplusplus com reference map map emplace 这是我的版本 include
  • 视图不在窗口层次结构中的 iOS

    当我从 PassCode 控制器移动到 OTP ViewController 时 我在控制台中收到以下错误 警告 尝试在 PassCodeController 0x1ec3e000 gt 其视图不在窗口层次结构中 这是我用来在视图之间更改的
  • 忽略 Racket 中的多个返回值

    在 Racket 中 可以通过执行以下操作从函数返回多个值 define foo values 1 2 3 然后我们可以通过这样做来绑定它们 define values one two three foo Now one一定会1 two t
  • 将多个绘图合并为 gif

    我正在尝试使用 caTools 包将多个绘图组合成一个 gif 我的基本代码如下所示 for i in 1 100 plot plots few points and lines changes slightly with each i 我
  • android 中的自定义 MediaPlayer 类

    我刚刚完成了一个项目 我使用网络视图进行视频播放 现在我被要求用自定义播放器替换 webview 部分 玩家应该能够处理 HLS 如果我使用VideoView和MediaController 我可以播放直播 但不幸的是 MediaContr
  • 选择列的一部分

    我想知道是否有人可以帮助查询以选择列的一部分 criteriadata 列包含如下所示的数据 标准数据 14 27 15 14 30 15 DD 14 38 15 通过 14 33 15 通过 如何只选择数字 15 之后出现的数据 非常感谢
  • AVAudioPlayer 在 iPhone 5 中无法工作

    我正在开发一个 iPhone 应用程序 在这个应用程序中 我使用 AVAudioPlayer 来播放音频 这是我播放声音的代码 NSString resourcePath NSBundle mainBundle resourcePath r
  • 如何为 VueJS 组件创建 v-model 修饰符?

    在VueJS中有一些v model修改预解析绑定值 例如v model trim从字符串中删除空格 如何创建自己的修改器 例如v model myparse今天嗯使用类似的东西 computed name get function retu