jQuery修改input的val能否触发v-model的更新

现在有需求,希望能通过jQuery修改input的值,并且能触发相关数据的更新,能不能办到。比如

$("input").val(2333);

我的需求比较奇葩啊,页面上有循环出来的大量input框,而这些input框需要通过一个自定义的键盘来输入。用jQuery的话只要在需要修改的input上打标记,然后再改它的值就行。只用vue的话目前没想到有啥简单的方法来实现。

现在的想法是,实在不行就在每个input上打上数组的维度标记,然后用jQuery根据维度去data中修改对应的值。这么一来就有点麻烦了

阅读 11.2k
6 个回答

可以的,需要在设置完之后触发一下事件:

$("input").val(2333)
//触发一下该input的input事件
$("input")[0].dispatchEvent(new Event('input'))

v-model 只不过是个语法糖,底层还是监听的input事件

不会触发相关数据更新,因为vue底层双向绑定实现的原理是基于监听input事件,脚本修改input的value值不会触发这个事件,相关依赖数据也就不会更新。你的需求可以通过直接获取vue实例上相关data的值,然后进行修改来实现,没必要用jquery。

你可以修改完了之后再设置一下vue中对应的数据的值

理论上是可以的,vue通过watcher劫持getter和setter只要你改变了绑定数据就会触发更新

那是肯定必须一定可以的

只是设置值并不行,vue的双向绑定是通过getter和setter,但是这里并不会触发setter。
真的不如直接设置data值,既然用vue,为何不好好使用双向绑定呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏