javascript - 从 vuejs 中的搜索中选择数据时出错?
问题描述
search:'',
searchHistory: [],
showSearchHistory: false,
selectPreviousSearch(index) {
this.search = this.searchHistory[index];
this.showSearchHistory = false;
},
<input
class="form-control"
id="SearchText"
type="text"
v-model="search"
@keydown.enter="enter"
@click="onClick"
@keyup.enter="processSearch"
@input="change"
@keyup="inputChanged"
@keydown.down="onArrow"
@keydown.up="onArrow"
/>
<ul class="list-inline" >
<li
class="list-inline-item list-group-item-primary"
v-for="(item, index) in searchHistory
.slice(-5)
.reverse()
.map((s) => s.trim())"
:key="index"
@click="selectPreviousSearch(index)"
>
{{ item }}
</li>
</ul>
以上是逻辑,如果我在搜索中添加任何内容并单击搜索按钮,数据将反映在下面的列表标签中。
现在的问题是,“selectPreviousSearch”(即来自 li 的数据)的 Onclick 准确数据未显示在搜索中。
例如,如果我在搜索中输入内容,即 a、b、c、d。数据反映在李中,但是当我点击 a 时,“a”应该显示在搜索中,但我在搜索中得到了一些不同的值,而不是“a”。
解决方案
那是因为您正在对searchHistory
数组进行切片并仅获取最后 5 个元素,并且您还可以在此处反转数组:
v-for="(item, index) in searchHistory
.slice(-5)
.reverse()
.map((s) => s.trim())"
循环上的index
值将是这个新数组的索引,所以当你这样做时:
this.searchHistory[index];
它不会得到正确的。
您可以在那里修复逻辑或执行以下操作:
this.search = this.searchHistory.slice(-5).reverse()[index];
更新
正如@Lawrence Cherone 在他的回复中指出的那样,你可以这样做:
@click="selectPreviousSearch(item)"
如果您需要this.search
修剪的值,它会像那样工作得很好。
推荐阅读
- php - 如何将 `$this` 绑定到 PHP 函数?
- java - 读取忽略日志的python函数的返回值
- javascript - 使用三元运算符检查数组中的键是否存在
- python - 在 Django 中,我可以从 App2 的 url.py 调用 App1 的视图函数吗?
- r - 什么是 SockJSAdapter 以及为什么它会无休止地运行
- linq - 如何在 linq 实体中选择表值?
- typescript - TypeScript React Native Flatlist:如何为 renderItem 赋予其项目的正确类型?
- ios - 我们如何在 Google Drive API 上上传多个文档文件
- wagtail - 鹡鸰模型管理员。自定义用户的几个部分
- c# - 一类多配置