我正在尝试显示"未找到结果"如果有人使用我的搜索功能搜索没有返回数据库结果的内容。我遇到的问题是"没有找到结果"立即打印到屏幕 - 然后在实际评估搜索查询时消失 - 然后在没有找到结果时重新出现。换句话说,它应该工作,因为它应该等到在打印之前实际触发和评估查询并且没有找到结果"到屏幕。从概念上讲,最好的方法是什么?一方面,我发现我可以使用超时。但这并没有直接解决问题。那么最好的方法是什么呢?这是我对函数的代码:
public get noResultsFound(): boolean
{
if (this.query && !this._isSearching && !this.hasResults) {
return true;
}
}
这是我的观看代码:
<div *ngIf="inputHasFocus && noResultsFound" class="no-results-found">No Results Found</div>
答案 0 :(得分:0)
承诺听起来像你需要的:D https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
有些事情。
search = (paramObj) : Promise<SomeDataClass> => {
// Some search logic
}
requestSearch() {
this.search(null).then((result) => {
if (result.length === 0)
{
//logic for showing 0 results here
}
else{
// Show result?
}
})
}
更完整的例子看起来有点像这样。
class example {
public someBool = false;
public search = (paramObj): Promise<Array<string>> => {
this.someBool = !this.someBool;
return new Promise<Array<string>>((resolver) => {
// This just simulates something taking time.
setTimeout(() => {
if (this.someBool) {
resolver([]);
} else {
resolver(["hi","there"]);
}
}, 1000)
});
}
public requestSearch() {
this.search(null).then((result) => {
if (result.length === 0) {
console.log("empty")
}
else {
console.log(result)
}
})
}
}
答案 1 :(得分:0)
所以,最后我能够解决这个问题,不是通过使用某种去抖超时,而是通过改变功能所关注的内容 - 可以这么说。通过这种方式处理它&#34;没有找到结果&#34;永远不会触发它。这就是我最终使用的:
public get noResultsFound(): boolean
{
if (!Object.isNullOrUndefined(this._results) && this._results.length < 1) {
return true;
}
}