为了账号安全,请及时绑定邮箱和手机立即绑定

Vuejs 动态输入绑定和计算不是函数

Vuejs 动态输入绑定和计算不是函数

慕丝7291255 2021-11-12 18:34:22
我需要帮助动态设置输入 v-model。基于下拉选择。我将从后端获取数据。现在,这是一个虚拟数据。例如,每行将有 3 个输入框。分子、分母和计算值。对于每个输入框,我都传递了这样的 v-model:form['num_' + idx], form['den_' + idx], form['comp_' + idx]。我在 data(state) 中创建了一个表单对象。如果我将计算值输入框 (:value) 与计算属性绑定,那么我将无法传递参数。我需要当前的分子、分母值。它给了我一个错误计算值不是函数。现在,我尝试将这个计算值函数放在方法部分,并在计算的每个输入框旁边添加了一个按钮。我真正需要的是,当分子和分母中的值发生变化时。它会自动计算该值并将其显示在第三个计算输入框中。计算出的输入框中的值未显示。如果我更改其他行中的行数据,有时它会显示值。
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

您需要使用Vue.set而不是索引[]来使对象更新成为反应式。

代替:

this.form[`comp_${c}`] = parseFloat(a) / parseFloat(b);

尝试:

Vue.set(this.form, `comp_${c}`, parseFloat(a) / parseFloat(b));


查看完整回答
反对 回复 2021-11-12
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您需要使用反应式属性,以便您的 vm 收到属性更新的通知并进行反应式更新。

form['num_' + idx]、form['den_' + idx] 和 form['comp_' + idx] 不是响应式的,因为您没有在从 data() 返回的对象上声明它们脚本块中的方法。

您需要使用 Vue.set/Vue.prototype.$set AKA this.$set 来动态设置响应式属性,如下所示:

this.$set(this.form, 'num_' + idx, value)

深入了解反应性 - Vue.js


查看完整回答
反对 回复 2021-11-12
  • 2 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号