- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上,我想做的是在 Vue.js 中实现一个填空系统,但我无法想出一个合适的设计来处理特定的功能。
这是我到目前为止的进展:Vue 组件采用一个名为 sentence 的 prop,它遵循以下格式:“这是一个 [test] sentence for [demonstration] purposes”。
应该显示为空输入字段的词被放在方括号中。这是它应该喜欢的:
我在计算属性的帮助下实现了这一点:
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>
基本上,我将字符串转换为数组,将索引为偶数的句子部分放入一个跨度中,而索引为非奇数的句子部分由输入标记替换。
现在回答我的主要问题:实现允许将当前输入与“应该输入”(即句子数组中的输入)进行比较的功能的最佳方法是什么。
我能想到的唯一想法是让输入成为数组字段的模型,但问题是我不想用用户输入覆盖原始数组的条目,但我想保存它变成一个“单独的变量”,然后我可以从一个函数访问它。
可能可行的一件事是创建一个长度为原始数组长度一半的新数组,将它们绑定(bind)到相应的字段,然后通过将其乘以 2(用于比较)来计算它在原始数组中的位置,但我想知道是否有更有效的方法。
(对于上下文,我正在开发一个允许用户测试他们的语法知识的应用程序。)
提前致谢!
最佳答案
这是我的尝试:
const FillInTheBlanks = {
template: `
<div>
<span v-for="(part, index) in sentenceParts" :key="index">
<input
v-if="part.input"
v-model="part.guess"
:aria-colindex="index"
:class="{ correct: partIsCorrect(part) }"
>
<span v-else>{{ part.text }}</span>
</span>
<p v-if="allCorrect">All done!</p>
</div>
`,
props: { sentence: String },
data () {
return {
sentenceParts: []
}
},
computed: {
allCorrect () {
return this.sentenceParts.every(this.partIsCorrect)
}
},
methods: {
partIsCorrect (part) {
return !part.input || part.text === part.guess
},
reset () {
const re = /(\[[^\]]*\])/
// The filter removes empty strings
const parts = this.sentence.split(re).filter(text => text)
this.sentenceParts = parts.map(segment => {
const isInput = re.test(segment)
return {
guess: '',
input: isInput,
text: isInput ? segment.slice(1, -1) : segment
}
})
}
},
watch: {
sentence: {
immediate: true,
handler: 'reset'
}
}
}
new Vue({
el: '#app',
components: {
FillInTheBlanks
},
data () {
return {
sentence: 'This is a [test] sentence for [demonstration] purposes'
}
}
})
.correct, p {
background: #7c7;
}
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
<div id="app">
Input sentence: <input v-model="sentence" style="width: 400px">
<br>
<br>
<fill-in-the-blanks :sentence="sentence"></fill-in-the-blanks>
</div>
问题中描述的方法似乎完全合法,我只是想探索一个替代方案。
最初我打算有两个数据结构,一个计算属性(如问题中所示)和 data
中的一些东西保存用户输入。但我也想清除用户输入,如果 sentence
Prop 改变了。为此,我需要使用 watch
从data
中删除相关属性.一旦我有了watch
实际上,完全放弃计算属性并将所有内容放在 data
中的一个数组中似乎更容易。 .
显然使用了 watch
而不是计算属性设置警钟响起。然而:
watch
.所以我决定摆脱计算属性是可用的妥协选项中最不坏的。根据 future 的需求,这个决定可能需要重新考虑,但现在似乎可以降低复杂性。
我尽量不使用偶数/奇数假设来确定是否使用 <input>
.具体来说,我想处理一个 <input>
一开始,尽管可以通过在开头放置一个虚拟空间来实现这一点。我还希望它能够处理连续的输入,尽管在实践中这似乎不太可能是必需的,因为我认为它们之间至少总是有一个空格。
关于javascript - 用 Vue.js 实现一个 "fill-in-the-blank"组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57792735/
我正在尝试使用此页面了解人工神经网络(它正在处理中,但我在更改一些小部分的同时将其转换为 C++):http://natureofcode.com/book/chapter-10-neural-net
我对此重定向有疑问。我试过使用 RewriteRule 和 RewriteCond 的 .htaccess 方法,以及 VirtualDirectory 方法。这是我为 VirtualHost 所做的
如果单元格 A1 为空白并且同一行中的任何单元格不为空白,我需要突出显示它。该行中的大多数单元格中都会包含公式。 最佳答案 创建一个新的条件格式,并使用这个公式: =AND($A$1="",COUNT
我在 Excel 中有这样一个公式: =IF(A1="foo";"";"0") 如果公式返回空白值,我不希望 POI 创建的结果 csv 文件中有任何值。如果公式返回 0,我希望在我的 csv 文件中
我正在尝试做类似this的操作,但是对于引用的电子邮件,所以这 On 2014-07-11 at 03:36 PM, wrote:
我正在使用 django-rest-framework 创建 Django 应用程序并使用 djongo 连接到 MongoDB。我有这样的嵌套模型: class Group(models.Model
我想在 VBA 中控制切片器,并想检查是否选择了空值,使用: If slicerCache.SlicerItems.Item("(blank)").selected = True 空值会自动获得标签(
这里是示例代码: var xwin = window.frames[0]; console.log(xwin.location); 即使链接“http://www.w3schools.com/j
如果表单中有空白,则会弹出警报。Javascript 中的错误检查正在工作, 但关闭警报后,表单中的文本将为空白。 我希望我填写的文本在警报关闭后仍保留。 因为我想填补警报后唯一的空白。 你能让我知道
我的 chrome 扩展内容脚本中有以下代码: window.open(chrome.extension.getURL("options.html"),'_blank'); 但是每当我尝试这个时,我只
在表单中,我有许多文本框。 我想要其中一个文本框作为可选。也就是说,用户可以填写也可以不填写此文本框。用户在提交时可以将其留空。但如果用户输入任何值,则该值必须是 url。 我正在使用以下代码。 @U
如何让下面的代码不捕获元素 具有属性 target="blank" ?因为location.href = link.href;在同一张卡片中打开(只有带有 target="blank" 的链接应该在没
截图: (来源:freenetph.yn.lt) 我在第 3 方网站上找到了这个随机链接代码(我忘记了名字),它看起来对我很有帮助,但我的问题是,我希望所有这些链接在单击时都会在新选项卡中打开。任何人
我只是在安装 laravel 时运行以下命令来设置路径 source ~/.bashrc 执行此命令后,ubuntu 终端上不会显示任何内容。只是光标在闪烁。 该怎么办? 最佳答案 ~/.bashrc
如何使用“空白”值更新列值(varchar(20), not null)? 最佳答案 如果要使用NULL更新它,则需要对其进行更改以允许NULL。否则,使用空字符串""更新。 关于sql - 如何使用
我目前正在使用 Excel VBA 中的数组处理大量数据。到目前为止,包含空白单元格的源数据已被视为零,但现在我必须尝试区分空白单元格和其中包含零的单元格。 是否可以使数组输出为零而不是零?这样……
我试过了 let url = URL(string: "http://about:blank") 和 let url = URL(string: "about:blank") Butt
在我将 LinkedIn 公司页面关注按钮添加到我们的网站后,单击该按钮会导致一个 about:blank 页面。显然,在阅读了一些关于同一问题的主题后,公司页面确实得到了关注。然而,被重定向到一些空
从 Firebug JavaScript 控制台是否可以访问 的内容对象 src属性设置为about:blank ?我尝试过: var b=document.getElementById("ifra
我是python新手,此代码旨在打印出MusicTaste.csv文件中的前100个常用单词并将其打印在表格中。我已经解决了过去的语法错误,但之前从未见过此错误。 请参见下面的代码 import re
我是一名优秀的程序员,十分优秀!