Javascript 如果使用了preventDefault,如何使Vue查看输入元素中的更改?

Javascript 如果使用了preventDefault,如何使Vue查看输入元素中的更改?,javascript,vue.js,Javascript,Vue.js,这是一个非常简单的例子。我不想在按enter键时在textarea中创建换行符。这就是我在处理程序中调用preventDefault的原因。我还修改了textarea中的值。问题是模型没有得到更新,因为我使用了preventDefault。 如何防止Enter键入换行符并使Vue查看textarea中的更改 请注意,我使用了el.value(更新元素)而不是this.value(Vue模型),因为我希望光标保持在相同的位置。如果我更新模型数据,则在渲染视图后光标将重置到末尾,并且我无法如此轻松地

这是一个非常简单的例子。我不想在按enter键时在textarea中创建换行符。这就是我在处理程序中调用
preventDefault
的原因。我还修改了textarea中的值。问题是模型没有得到更新,因为我使用了
preventDefault
。 如何防止Enter键入换行符并使Vue查看textarea中的更改

请注意,我使用了
el.value
(更新元素)而不是
this.value
(Vue模型),因为我希望光标保持在相同的位置。如果我更新模型数据,则在渲染视图后光标将重置到末尾,并且我无法如此轻松地修复它的位置

我需要一种带有
$nextTick
的黑客来固定光标位置:

this.$nextTick(() => {
      el.setSelectionRange(cursorPos, cursorPos);
    })
所以我不想让事情变得复杂,也不想触摸模型并导致视图被重新渲染。为什么?我只想让Vue注意到输入值的变化。我觉得我需要手动发出一些事件(为我的textarea触发输入事件,但如何触发?)

newvue({
el:“#应用程序”,
数据:{
价值观:“你好,世界”
},
方法:{
固定问候语(evt){
evt.preventDefault();
设el=evt.target;
让cursorPos=el.selectionStart;
el.value=el.value.replace('.','');
el.设置选择范围(cursorPos,cursorPos);
}
}
});

模型:{{value}}

嗯,我想我找到了一个足够干净的解决方案。 在方法代码的末尾,我只需要添加:
el.dispatchEvent(新事件(“输入”)

Vue将根据元素值更改模型

如果有任何缺点,请在评论中告诉我