0

我最近在我们公司实施了 Christophe Coenraets 的员工目录应用程序,稍微简化了一点,因为我们不需要经理功能。

阻止我发布的一件事是自动搜索功能,我根本找不到停用它的方法,而是设置了一个标准搜索框并提交按钮行为。我们的 1500 多名员工数据库甚至对于 iPhone 5 来说都太多了,而且非常缓慢和迟缓。

我尝试在他的博客上发帖,但它给了我一个数据库错误。

这是他的应用程序的链接:http: //coenraets.org/blog/2012/03/employee-directory-sample-app-with-backbone-js-and-jquery-mobile/

任何熟悉此应用程序或主干.js 的人可能会对此有所了解吗?

非常感谢。

更新:我发现了一种更简单的实现搜索的方法,将其延迟 1.5 秒。我在这里添加了underscore.js框架的_.debounce函数:

search: _.debounce(function(event){
var key = $('.search-key').val();
this.model.findByName(key);
}, 1500)
});

再次感谢您的回复。

更新 2:我去尝试使用 enter 键使应用程序工作,而不是等待期。到目前为止,这是我的代码,但它只是停留在那里,并且不响应 Enter 键。控制台也什么也没说。有任何想法吗?

events: {
    //"keyup .search-query": "search",
    "keypress .search-query": "onkeypress"
},

search: function () {
    var key = $('.search-key').val();
    console.log('search ' + key);
    this.searchResults.findByName(key);
    setTimeout(function () {
        $('.dropdown').addClass('open');
    });
},

onkeypress: function (event) {
    if (event.keyCode == 13) {
        event.preventDefault();
        this.search()
    }
}
});
4

2 回答 2

0

它在那里: https ://github.com/ccoenraets/backbone-directory/blob/master/web/js/views/header.js#L15

您需要将其更改为以下内容:

events: {
    //"keyup .search-query": "search",
    "keypress .search-query": "onkeypress"
},

search: function () {
    var key = $('#searchText').val();
    console.log('search ' + key);
    this.searchResults.findByName(key);
    setTimeout(function () {
        $('.dropdown').addClass('open');
    });
},

onkeypress: function (event) {
    if (event.keyCode == 13) {
        event.preventDefault();
        this.search()
    }
},

这将关闭自动搜索并启动搜索,用户必须按 Enter。

就像thinice一样,我也建议限制结果的数量。添加一些分页可能吗?如果您想进行分页,请看这里:https ://github.com/ccoenraets/backbone-directory/blob/master/api/index.php#L15

于 2013-08-09T00:09:35.033 回答
0

我对该应用程序的初步了解表明,搜索功能执行 HTTP 请求以获取员工数据的 JSON 数组,该数组在击键后填充该下拉列表。

这应该就像将后端代码返回的结果数量限制在合理数量一样简单。

如果您想对用户更加友好 - 显示返回的记录数,在找到的 # 个记录中 - 并指示他们在搜索中更加具体以缩小结果集。

于 2013-08-09T00:07:20.530 回答