javascript - 如何调整官方 Vue 过滤器示例以使用 Vuetify 的`v-text-field`
问题描述
我想要做的是应用文档中的以下 Vue 示例来使用 v-text-field 组件:https ://vuejs.org/v2/guide/migration.html#Two-Way-Filters-replaced
使用简单的输入字段时,它工作正常,但使用 v-text-field 时,会导致字段中显示的内容与值本身不匹配(如 Vue Devtools 所示)。
我创建了一个 CodePen 来演示我的问题:https ://codepen.io/anon/pen/EpvaWQ 。我正在替换基本input
字段:
<input
ref="input"
v-bind:value="value"
v-on:input="updateValue($event.target.value)"
v-on:focus="selectAll"
v-on:blur="formatValue"
>
使用 Vuetify 的v-text-field
:
<v-text-field
ref="input"
v-bind:value="value"
v-on:input="updateValue($event.target.value)"
v-on:focus="selectAll"
v-on:blur="formatValue"
><v-text-field>
第一个字段是 Vue 文档中的示例,第二个字段是相同的,但使用 v-text-field 组件而不是输入字段。在第一个字段中键入会按预期工作(就像在 Vue 文档中一样),但在第二个字段中键入不会像第一个字段那样格式化数字。
要重现问题:12.3456
在第一个字段中输入,然后在第二个字段中输入。该值在第一个字段中正确截断,但在第二个字段中未截断。
任何人都知道如何解决这个问题?
解决方案
主要问题在于this.$refs.input.value
因为是组件,并且该字段与内部标签值v-text-field
无关。<input>
解决方法是使用一些内部字段,观察主值道具并将内部字段更改nextTick
为正确的值 - 我分叉了 codepen,请参阅此https://codepen.io/anon/pen/KBvZEq
v-text-field
同样作为另一种解决方案,您可以访问这样的“本机”输入值
this.$refs.input.$el.getElementsByTagName('input')[0].value
但我认为它会带来一些新问题,看起来像“肮脏”的方式。
推荐阅读
- javascript - 如何在打字稿中定义字符串类型“不在”联合中?
- css - sass如何覆盖变量值?
- jinja2 - 如何避免在气流日志中显示密码 jinja 参数?
- html - HTML CSS 灵活的增长列表
- npm - 在团队之间共享逻辑的最佳方式(Web + Native)
- spring-boot - 如何在 Spring Boot 中调用没有实体类的存储过程?
- reactjs - 使用 react-accessible-accordion 库,当它发生变化时,我无法预先扩展以关闭扩展的手风琴
- reactjs - Marker 和 MapView 等 mapView 元素的类型是什么,Typescript react native?
- javascript - 如何使用下拉选择选项数据属性获取多个值?
- node.js - 部署在 Heroku 上时,令牌未保存在本地存储中