【问题标题】:UI Bootstrap Typeahead not returning async valuesUI Bootstrap Typeahead 不返回异步值
【发布时间】:2016-08-06 18:47:15
【问题描述】:

我正在尝试使用 UI Bootstrap Typeahead 进行自动完成搜索,以从数据库中选择一个类别。

我已经建立了一个包含 4 个类别的示例数据库,最后一个将包含一千多个类别。

当我开始输入时,搜索结果返回 4 行(所以一定有什么问题,因为我试图更改数据库中的行数,搜索结果反映了总行数)但没有任何值。但是,我写什么并不重要,所以它似乎不匹配。

HTML

<input class="form-control" type="text" name="category" id="category" placeholder="Search..." ng-model="asyncSelected" typeahead="name for name in getCdOnCat($viewValue)" typeahead-loading="loadingLocations" required>

controller.js

//Typeahead: Category Search
$scope.getCdOnCat = function (searchVal) {
    return dataFactory.getCdOnCategory(searchVal, globalVal_accessToken, globalVal_storeId).then(function (response) {
        console.log(response.data.categories);
        return response.data.categories;
    }, function (error) {
        console.log('Error: dataFactory.getCdOnCategory');
    });
};

service.js

app.factory("dataFactory", function ($http) {
var factory = {};

factory.getCdOnCategory = function (searchVal, accessToken, storeId) {
    return $http.get('data/getCdOnCategory.aspx?searchVal=' + searchVal + '&accessToken=' + accessToken + '&storeId=' + storeId)
};

return factory;
});

JSON

{ "categories":[ 
    { "name": "Clothes" }, 
    { "name": "Cypress" }, 
    { "name": "Citrus" }, 
    { "name": "Cats" } 
] }

【问题讨论】:

    标签: angularjs angular-ui-bootstrap angular-ui-typeahead


    【解决方案1】:

    请看这里http://plnkr.co/edit/F4n1kNOHfZ9f3Zz63x2P?p=preview

    改变

    <input class="form-control" type="text" name="category" id="category" 
     placeholder="Search..." ng-model="asyncSelected" 
     typeahead="name for name in getCdOnCat($viewValue)" typeahead-loading="loadingLocations" 
     required>
    

    <input class="form-control" type="text" name="category" id="category" 
     placeholder="Search..." ng-model="asyncSelected" 
     typeahead="obj.name for obj in getCdOnCat($viewValue)" typeahead-loading="loadingLocations" 
     required>
    

    【讨论】:

    • 非常感谢!越来越近。现在显示值,匹配搜索的字母加粗。但我只希望它显示与搜索匹配的行(当我有超过一千行时也希望能够限制这个数字),现在无论我写什么,所有行都会显示。如果没有匹配的行,使用“没有匹配的类别...”行也会很好。
    • @peta 你应该在你的服务器端使用它。我已经向您展示了唯一的基本示例,我可以在 pluker 上进行服务器端过滤。但是您的代码似乎很好,您将查询值传递给您的服务器,因此您的服务器应该响应数组匹配类别
    • 你当然是对的!但是如果没有结果呢?
    • @peta 你可以从你的服务器返回,即 ["No results"]
    • 是的,但是这个选项不可以选择吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2015-12-19
    • 1970-01-01
    相关资源
    最近更新 更多