Javascript 如何在AngularJS中显示数组中的搜索建议
我正试图找出如何从建议数组中显示多达10个选项,然后让用户能够选择选项,而该选项现在成为搜索查询 Html和AngularJS:Javascript 如何在AngularJS中显示数组中的搜索建议,javascript,angularjs,Javascript,Angularjs,我正试图找出如何从建议数组中显示多达10个选项,然后让用户能够选择选项,而该选项现在成为搜索查询 Html和AngularJS: <ul class="suggestions" ng-show="showAutocomplete"> <li ng-repeat="suggestion in autocomplete.suggestions" ng-show="suggestion.options.length > 0" ng-mousedown="searchForS
<ul class="suggestions" ng-show="showAutocomplete">
<li ng-repeat="suggestion in autocomplete.suggestions" ng-show="suggestion.options.length > 0" ng-mousedown="searchForSuggestion()"><small>Searching —</small>
{{suggestion.options[0].text}}//how to display up to 10 options
</li>
</ul>
JS:
更多JS:
var getSuggestions = function(query) {
searchService.getSuggestions(query).then(function(es_return) {
var suggestions = es_return.suggest.phraseSuggestion;
if (suggestions.length > 0) {
$scope.autocomplete.suggestions = suggestions;
}
else {
$scope.autocomplete.suggestions = [];
}
if (suggestions.length > 0) {
$scope.showAutocomplete = true;
}
else {
$scope.showAutocomplete = false;
}
});
};
建议是映射到$scope.autocomplete对象的数组。
我使用的是来自ES的短语建议,选项是短语建议对象中的一个数组。Text是PhraseSuggestion对象中选项数组中的实际选项
我希望这能让事情变得更清楚一点——我对AngularJS有点陌生,还在学习
更新:
我应该能够在getSuggestions函数中包含我正在寻找的功能,对吗?只是稍微调整一下if语句。。。那么它真正要做的就是显示,如何在选项数组中显示多达10条建议我想您可能希望使用嵌套的
ng repeat
,并在其上放置一个limito
过滤器
$scope.autocomplete = {
suggestions: []
};
$scope.showAutocomplete = false;
我制作了一个plunker,展示了如何使用limito
,并在此处填充的选项上单击ng
如果选择一个选项会改变建议,则可以相应地更新视图
希望这能帮到你 建议和选项之间有什么区别?我知道你的建议中有选择吗?你能举个例子吗?你可以用
limito:10
嵌套另一个ng repeat
?并为每个?定义一个ng单击@lex82给我一分钟时间为问题添加更多信息我将尝试一下,让你知道。当然,它与您的代码并不完全相同,但您应该能够将其调整到您想要做的事情中:数据将在处理它的同时考虑一个想法-将增加问题-太多,无法评论
var getSuggestions = function(query) {
searchService.getSuggestions(query).then(function(es_return) {
var suggestions = es_return.suggest.phraseSuggestion;
if (suggestions.length > 0) {
$scope.autocomplete.suggestions = suggestions;
}
else {
$scope.autocomplete.suggestions = [];
}
if (suggestions.length > 0) {
$scope.showAutocomplete = true;
}
else {
$scope.showAutocomplete = false;
}
});
};