【发布时间】:2020-01-07 14:29:16
【问题描述】:
基本上,我想做的是在 Vue.js 中实现一个填空系统,但我在想出一个合适的设计来处理某些功能时遇到了麻烦。
到目前为止,我已经做到了这一点:Vue 组件采用了一个名为 sentence 的道具,其格式如下:“This is a [test] sentence for [demonstration] purpose”。
应该显示为空输入字段的单词放在方括号中。这是它应该喜欢的:
我在计算属性的帮助下实现了这一点:
computed: {
sentence_parts: function () {
return this.sentence.split(/\[([^\]]*)\]/)
}
}
并使用以下 HTML 代码:
<template>
<div>
<span v-for="(part, index) in sentence_parts" v-bind:key="index">
<span v-if="index % 2 == 0">{{part}}</span>
<span v-else><input type="text" v-bind:aria-colindex="index"></span>
</span>
</div>
</template>
基本上,我将字符串转换为数组,将具有偶数索引的句子部分放入一个跨度中,而将具有不均匀索引的句子部分替换为输入标签。
现在我的主要问题:实现允许将当前输入与“应该输入”(即句子数组中的输入)进行比较的功能的最佳方法是什么。
我能想出的唯一想法是让输入成为数组字段的模型,但问题是我不想用用户输入覆盖原始数组的条目,但我想保存它变成一个“单独的变量”,然后我可以从一个函数中访问它。
可能会起作用的一件事是创建一个长度为原始数组一半的新数组,将它们绑定到相应的字段,然后通过将其乘以 2 来计算它在原始数组中的位置(用于比较),但我想知道是否有更有效的方法。
(对于上下文,我正在开发一个允许用户测试他们的语法知识的应用程序。)
提前致谢!
【问题讨论】:
标签: javascript vue.js