javascript - 如何在搜索功能中处理 'No Results Found'

标签 javascript angular typescript

如果有人使用我的搜索功能搜索未从数据库返回任何结果的内容,我会尝试显示“未找到结果”。我遇到的问题是“未找到结果”立即打印到屏幕上 - 然后在实际评估搜索查询时消失 - 然后如果没有找到结果则重新出现。换句话说,它正在正常工作,只是它应该等到查询实际触发并评估后再将“未找到结果”打印到屏幕上。从概念上讲,执行此操作的最佳方法是什么?一方面,我想到我可以使用暂停。但这并不能真正直接解决问题。那么解决这个问题的最佳方法是什么?这是我的函数代码:

public get noResultsFound(): boolean
{
    if (this.query && !this._isSearching && !this.hasResults) {
        return true;
    }
}

这是我的 View 代码:

<div *ngIf="inputHasFocus && noResultsFound" class="no-results-found">No Results Found</div>

最佳答案

Promise 听起来就像你所需要的: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)
            }
        })
    }
}

关于javascript - 如何在搜索功能中处理 'No Results Found',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710286/

相关文章:

javascript - 如何捕获 AngularJS 输入字段中的模式错误?

node.js - Angular 和 Node.JS Express 如何在同一个端口运行?

javascript - Angular 2 typescript变量值在范围内变化

javascript - golang net/http上传大文件,未定义错误

Angular 5 属性指令将 mat-ripple 添加到主机元素

javascript - 在 Typescript 中使用超出范围的函数

javascript - 带有 HTML chop 数据的可调整表

javascript - Jquery选择器语法

javascript - Angular 指令不工作 Chrome 打包应用程序

angular - 当我展开一个标签部分时,所有克拉箭头都朝上。只有选定的箭头应该出现