【发布时间】:2020-03-08 07:38:19
【问题描述】:
我在一个项目中使用 Vuetify 并创建了就地编辑体验。在跨度和文本字段之间切换有效,并且它正确地将更新发送到我的服务器。不过,在我可以将此功能称为完成之前的最后一件事是,我需要确定输入的原始值是否已从新值更改,以便在不需要时不会发布到我的服务器。
<span
v-if="editableCategory !== `category${category.id}Ref`"
class="category-header"
@click="setCategoryEditing(`category${category.id}Ref`)">
<h4>{{ category.name }}</h4>
<v-icon small>
edit
</v-icon>
</span>
<v-text-field
v-else
:ref="`category${category.id}Ref`"
:value="category.name"
color="primary"
dense
hide-details
type="text"
outlined
@blur="updateCategory(category, $event)"
@change="updateCategory(category, $event)" />
问题是,当我在控制台记录$event 时,在测试@change 和@blur 时会得到两个不同的响应。 @blur 似乎给了我正常的、完整的事件对象,然后我就能够正确地比较新旧值。然而,@change 事件只是给了我一个新值的字符串。
这是 Vuetify v-text-field @change 事件未正确触发的问题(因此我应该与他们创建一个 Github 问题?),还是我完全误解了模糊/更改事件(也是另一个非常真实的事件可能性)?
【问题讨论】:
-
也许你应该看看
v-edit-dialog组件中可用的事件 - open、close、cancel 和 保存。您也可以尝试@change.native看看是否有帮助。 -
我没有在这里使用
v-edit-dialog。我实际上尝试使用@change.native选项,但由于某种原因它阻止我按 Enter 键? -
然后您可以为
v-model使用不同的变量,这样您就可以捕获@keydown.enter事件并将category.name与temp_name进行比较,以决定是否发布新值到服务器与否。
标签: vue.js vuetify.js