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

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

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

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

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

回答:

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

$("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,为何不好好使用双向绑定呢?

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注