javascript - 如何从VueJS中的另一个输入更改输入值
问题描述
我有两个文本框网格,如下所示: 输入框
目标是用户填写上面的框,然后当他们填写下面的框时,上面的框会自动更新。即,如果您在顶部的第一个框中输入 100,然后在底部的第一个框中输入 75,则第一个框将变为 25。
我尝试使用 onchange() 但没有成功。v-model 的双向绑定似乎会导致一些问题,这是有道理的。任何帮助表示赞赏。
这是填充输入框的 HTML:
> <form v-on:submit.prevent="addNewTask">
<table>
<thead>
<tr>
<th></th>
<th v-for="(column, columnIndex) in columns" :key="columnIndex">{{column}}</th>
</tr>
</thead>
<tbody>
<tr v-for="(record, rowIndex) in records" :key="rowIndex">
<td>{{record.row}}</td>
<td v-for="(detail, index) in record.details" :key="index">
<input type="text" v-model="detail.value">
</td>
</tr>
</tbody>
</table>
<br><br>
<table>
<thead>
<tr>
<th></th>
<th v-for="(columnS, columnIndexS) in columns_Spend" :key="columnIndexS">{{columnS}}</th>
</tr>
</thead>
<tbody>
<tr v-for="(recordS, rowIndexS) in records_Spend" :key="rowIndexS">
<td>{{recordS.rowS}}</td>
<td v-for="(detailS, indexS) in recordS.details_Spend" :key="indexS">
<input type="text" v-model="detailS.value_Spend">
</td>
</tr>
</tbody>
</table>
<br><br>
<button v-if="this.isEdit == false" type="submit" class="btn btn-success btn-block mt-3">
Submit
</button>
解决方案
首先,将<td>
节点拆分为子组件,并在输入更改时将其值发送到父(主)组件。然后使用一种方法计算并设置“其他”框子组件的剩余值(大概保存在一个数组中,您需要在该方法中找到该数组中的正确元素)。更改后的数组将自动更新另一个子组件,因为它已绑定到道具。
推荐阅读
- java - 尽管采取了推荐的步骤,API 调用仍会引发 sslhandshakeexception
- java - 检索动态弹出菜单项
- python - 如何将 Boost.Python 中的 map_indexing_suite 与自定义非标准对象一起使用?
- webrtc - jitsi 会议截图
- java - JWT 验证失败:无法为 RSA 签名指定密钥字节。请指定 PublicKey 或 PrivateKey 实例
- javascript - 如何使用jquery在循环中更改每个按钮的值
- entity-framework-core - 实体框架核心排除 INNER JOIN
- c# - 封装没有 lambda 表达式的字段
- c# - 如何使用 C# 中的 zkemkeeper 库在图片框中的运行时获取指纹?
- python - 根据熊猫组比较日期