V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gaays
V2EX  ›  Vue.js

如何动态的去监听数值变化?

  •  
  •   Gaays · 2022-04-12 18:03:33 +08:00 · 1784 次点击
    这是一个创建于 737 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如通过数组渲染一个表单,根据 formList 渲染,有三个表单项,分别是蔬菜、水果和卡路里,现在输入蔬菜的值后,计算卡路里。卡路里与蔬菜这个表单项有关联关系。

    这种应该怎么实现数据输入监听动态更新关联表单项的值,给每一个表单项都设置一个 input 事件?然后判断 id 是否与 joinId 相同?然后更新关联表单项的值?有更优美的方法嘛(表项数量、关联字段不定)

    谢谢大家

    formList=[
    	{
        	id:1,
            type:'单选',
            label:'蔬菜'
        },
        {
        	id:2,
            type:'多选',
            label:'水果'
        },
        {
        	id:3,
            type:'关联',
            joinId:1,
            label:'卡路里'
        },
    ]
    
    8 条回复    2022-04-14 13:29:41 +08:00
    zzfer
        1
    zzfer  
       2022-04-12 18:20:21 +08:00
    我是个后端,一年前写过一些 vue ,可能说的不太对。你说的好像 vue 的 watch 事件就可以实现吧。

    一些 ui 框架的表单也支持关联改动吧
    haah
        2
    haah  
       2022-04-12 18:36:31 +08:00
    简单,轮询呀!
    haah
        3
    haah  
       2022-04-12 18:38:26 +08:00
    轮询后对比 JSON 值!
    haah
        5
    haah  
       2022-04-12 18:44:11 +08:00
    还是用原生 js 好一些!
    Gaays
        6
    Gaays  
    OP
       2022-04-13 08:42:32 +08:00
    @zzfer
    @lcorange
    watch 只能针对指定值监听,或者监听整个表单的数据对象,我想知道除了监听整个数据对象之外还有没其他方式更精准的获取指定表单项数据变动,我目前想到的做法是在渲染表单项的时候提前遍历一遍,比如给 formList 每一被关联项添加一个 key 来判断,然后 v-if 条件渲染,被关联的表单项添加一个 input 或者 change 事件。
    err1y
        7
    err1y  
       2022-04-13 13:06:26 +08:00 via iPhone
    lcorange
        8
    lcorange  
       2022-04-14 13:29:41 +08:00
    @Gaays https://v3.cn.vuejs.org/api/instance-methods.html#watch
    看看这里的 deep 选项可不可行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3351 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 12:08 · PVG 20:08 · LAX 05:08 · JFK 08:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.