vuejs2 - 遍历多个对象时在 VueJS 中很好地设置 tabIndex
问题描述
我有几个嵌套对象需要迭代以创建输入。我将其简化为下面的示例。我想在这些输入中设置 tabIndexes。
<div v-for="(iv, ik, ii) in {a: 'x', b: 'x'}" :key="ii">
<div v-for="(jv, jk, ji) in {a: 'y', b: 'y'}" :key="ji">
<div v-for="(kv, kk, ki) in {a: 'z', b: 'z', c: 'z'}" :key="ki">
<input type="text" :tabindex="(ii * 100) + (ji * 10) + ki" />
<label>{{(ii * 100) + (ji * 10) + ki}}</label>
</div>
</div>
</div>
能够将我的 tabindex 设置为 0、1、2、3 等的最佳方法是什么?我发现在 v-for 上设置第三个参数提供了一个数字索引,但我得到的似乎有点令人费解。有没有更好的方法可以解决这个问题?
以上结果输出如下:
[___________] 0
[___________] 1
[___________] 2
[___________] 10
[___________] 11
[___________] 12
[___________] 100
[___________] 101
[___________] 102
[___________] 110
[___________] 111
[___________] 112
哪个有效,但似乎不太理想。我知道 Tab 键会按预期工作,如果它们是连续的并且间隙看起来很好。但是有没有一种更简洁的方法可以让我得到 1 到 12 而不是我得到的交错数字?基本上就像每次我点击的运行索引(x++等)?
我尝试在“数据”中设置一个 int,然后使用一种方法来增加它,但很快就让自己陷入了无限的重新渲染循环。
谢谢。
解决方案
这样做有一个技巧,但这是一种技巧,而不是最佳实践
模板:
{{numitems = 0 | hide}}
<div v-for="(iv, ik, ii) in {a: 'x', b: 'x'}" :key="ii">
<div v-for="(jv, jk, ji) in {a: 'y', b: 'y'}" :key="ji">
<div v-for="(kv, kk, ki) in {a: 'z', b: 'z', c: 'z'}" :key="ki">
<input type="text" :tabindex="numitems += 1" />
<label>{{(ii * 100) + (ji * 10) + ki}}</label>
</div>
</div>
</div>
脚本hide
过滤器定义
filters: {
hide: function(value){
return ''
}
}
您不需要隐藏过滤器,但它确保您在定义期间不会将任何内容放入模板中。您也可以numitems
在 中定义data
。并使用方法来重置和递增。
另一种选择是设置一个计算值,该值使用您生成的数字作为增量值的索引,没有任何间隙。
每当您的对象的键发生变化时,您都可以进行计算,使用您的方法或使用对象生成键。
${ik}_${jk}_${kk}
这是一个用作键的示例
tabIndexVals(): {
let c = 0;
let o = {};
Object.keys(i).forEach(ik => {
Object.keys(i[ik]).forEach(jk => {
Object.keys(i[ik][jk]).forEach(kk => {
let key = `${ik}_${jk}_${kk}`;
o[key] = c;
c++;
})
})
})
return o;
}
推荐阅读
- kotlin - 如何在 Kotlin 中将十六进制字符串转换为十进制字符串?
- javascript - 如何计算某个单词在 JavaScript 中充满文本的 div 中出现的次数?
- python - 如何从 Python 中的测试数据进行插值?2组输入
- amazon-cognito - 如何将 AWS Cognito 本机用户链接到联合用户
- java - 为什么在执行 Java Stream 终端操作时对象没有被垃圾收集?
- python - Keras 自定义数据生成器通过多输入和多输出提供维度错误(功能性 api 模型)
- php - 数组、数组和对象
- macos - macOS Big Sur - 安装所选更新时出错
- javascript - 满足按钮单击条件以在javascript中显示消息
- powershell - 分隔输入到字符串中的值