angularjs - 使用 api 调用结果填充 typeahead
问题描述
所以我对这个输入搜索栏的理想功能是从数据库中获取与用户在去抖动后输入的任何内容相匹配的所有结果。
我正在取回一个数组,并且预输入也在正常工作并正确显示数据。
但是,api 总是查询以前的值,现在查询当前输入中的任何内容。
例如,如果我要搜索的值是“时钟”:
输入值 = "";
如果我输入“时钟”,网络显示 api 正在获取“”。
如果我在“时钟”之后再添加一个字母,例如“时钟”,则网络显示它为“时钟”进行 api 获取。
这是发出 get 请求并返回用于填充 typeahead 的数组的函数。
$scope.getDynamicSearchCompanies = function(val) {
return $scope.Company.query({
limit: 16,
keyword: val
}).$promise.then(function(res) {
return res.companies;
})
.catch(function(err) {
throw err;
})
}
<input
type="text"
placeholder="Company name or JNXS code"
ng-model="filter.company"
ng-model-options="{ debounce: 250 }"
class="form form-control"
uib-typeahead="company as (company.name + ' - ' + company.jinx_company_id + (!company.is_active ? ' (inactive)' : '') ) for company in getDynamicSearchCompanies(filter.company) | limitTo:16"
autocomplete="nope"
>
解决方案
如果你替换这个:
getDynamicSearchCompanies(filter.company)
有了这个:
getDynamicSearchCompanies($viewValue)
它会解决你的问题。您可以在此处阅读官方文档链接 和官方 plunker,其中包括与您的plunker相同的案例
推荐阅读
- mysql - 在mysql中选择前半年的记录
- javascript - 如何正确更新递归函数中的变量 - 基本示例
- java - Jersey FormDataParam 失败并出现 400 错误请求
- functional-programming - 如何在 F# 中直接将函数应用于匹配表达式的值
- python - 过滤熊猫数据框中的单元格,其中包含数组
- javascript - “应用内购买 2”中的订阅不归还拥有
- reactjs - 在循环的每次迭代中更新 useState 变量后,React 子组件不会重新渲染
- linq - LINQ to SQL - 无法翻译空值的表达式检查
- python - 格式化列表中的特定元素
- azure-cognitive-search - Azure 认知搜索:搜索包含“-”的数据