vue.js - @input 指令:等待用户完成他的查询
问题描述
我的 vue 学习曲线:我注意到输入文件通过 ajax (axios) 向 YouTube 发送一个调用,每个键输入到 inout 文件中。因此,它已经在 Youtube 搜索 APi 中执行了搜索。我猜想使用这种方法通过关键字等搜索数据库,这本来可以很好地工作,但是当使用 YouTube 视频等 API 时,如果它可以等到用户完成他的搜索查询,它应该会更好。所以我的问题是有一个指令或任何其他方式来强制 API 调用等待用户完成他的搜索查询,然后再在 YouTube 中运行调用?顺便说一句,在测试时,我在 1 小时内超过了 YouTube API 的 1,000 个限制。
这是 App.vue
<template>
<SearchBar @emitTermSearch="onTermSearch"></SearchBar>
<VideoList :videos="videos"></VideoList>
</template>
<script>
import axios from "axios";
import SearchBar from "./components/SearchBar";
const API_KEY = "hidden";
export default {
name: "App",
components: {
SearchBar
},
data() {
return {
videos: []
};
},
methods: {
onTermSearch(emitTermSearch) {
axios
.get("https://www.googleapis.com/youtube/v3/search", {
params: {
key: API_KEY,
type: "video",
part: "snippet",
maxResults: 2,
order: "date",
q: emitTermSearch
}
}.then(response => {
this.videos = response.data.items;
}).catch(err => {
console.log(err);
});
}
}
};
</script>
这是 SearcBar.vue
<template>
<h1>Please Search</h1>
<div id="searchbar">
<input @input="onInput" />
</div>
</template>
<script>
export default {
name: "SearchBar",
methods: {
onInput(event) {
this.$emit("emitTermSearch", event.target.value);
}
}
};
</script>
解决方案
代替onInput
on ,您可以在(或其他键)@input
上发出您的事件,或者添加一个带有事件的按钮。@keyup.enter
@click
另一种方法是设置超时:
onInput(event) {
setTimeout(() => {
this.$emit("emitTermSearch", event.target.value);
}, 700)
}
推荐阅读
- java - 函数“org.apache.jena.rdf.model.hasProperty”不起作用
- codeigniter-4 - 我的问题我如何将代码放入模型和控制器 Codeigniter4
- .net - Alpine Docker 缺少 kernel32.dll 库
- excel - 在已查找的另一个值的同一行中查找值?
- c# - IAsyncActionFilter 中的 OnActionExecutionAsync 有时只会命中
- azure - 如何将 Azure 订阅密钥标头添加到 JAX-WS SOAP 消息
- apache-flink - 在源头分配时间戳时,flink如何处理延迟?
- python - 如何在 python 中使用元类来增加或覆盖添加到类中的方法
- retrofit2 - 与协程流一起使用时取消改造请求
- python - 如何在执行语句时每 x 秒打印到 python 控制台经过的时间?