You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue开发中如何在computed计算属性内使用v-for的index索引

普通Vue计算属性默认是无参数的属性访问形式,你之前的写法一方面是计算属性本身没有接收index参数的逻辑,另一方面原有计算属性的逻辑只会返回单个匹配对象,没有和index做对应绑定,所以无法通过下标获取对应行的填充数据。可以通过以下两种方案实现需求:

方案1:计算属性返回可接收参数的函数

这种方案改动最小,直接调整计算属性返回一个接收index参数的函数即可:

computed: {
  Autofill() {
    // 返回接收index参数的函数
    return (index) => {
      const currentNumber = this.Number[index]
      // 无匹配数据时返回空结构避免报错
      if (!currentNumber ||!this.json) return { autofill1: '', autofill2: '' }
      // 匹配当前行number对应的json数据
      return this.json.find(item => +item.number === +currentNumber) || { autofill1: '', autofill2: '' }
    }
  }
}

模板部分对应修改调用方式即可:

<b-form-input type="text" :value="Autofill(index).autofill1"></b-form-input>
<b-form-input type="text" :value="Autofill(index).autofill2"></b-form-input>

方案2:计算属性返回匹配数组

如果希望利用计算属性的缓存能力减少重复执行,可以直接让计算属性返回和输入行一一对应的数组:

computed: {
  AutofillList() {
    if (!this.json) return []
    // 遍历所有输入的Number,按顺序生成对应填充数据数组
    return this.Number.map(num => {
      if (!num) return { autofill1: '', autofill2: '' }
      return this.json.find(item => +item.number === +num) || { autofill1: '', autofill2: '' }
    })
  }
}

模板部分几乎不用改动,调整调用的计算属性名即可:

<b-form-input type="text" :value="AutofillList[index].autofill1"></b-form-input>
<b-form-input type="text" :value="AutofillList[index].autofill2"></b-form-input>

注意:你现有模板代码中的<b-form-input>标签缺少闭合尖括号,修改时请补上避免渲染错误。

内容的提问来源于stack exchange,提问作者patrick96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:27:02