【发布时间】:2017-04-01 18:59:16
【问题描述】:
我对 Angular 真的很陌生,所以这可能非常简单,但我似乎无法让它工作。我有一个应用程序,它有一个搜索字段,需要在用户键入时主动过滤结果。我的所有数据都在 searchResults 对象中。当我在文本框中输入时没有任何反应。我错过了什么?提前感谢您的帮助。
<div>
<input ng-model="query" name="search" id="search" type="text" placeholder="search by product or category">
<ul id="filteredResults" ng-if="results.length">
<li ng-repeat="result in results | filteredSearchFilter | limitTo: 10">{{result.name}}</li>
</ul>
</div>
filteredSearch.filter.js
module.exports = function() {
return function(data, keys, query) {
results = [];
if( !query ){
return data;
} else {
angular.forEach( data, function( obj ){
var matched = false;
angular.forEach( keys, function( key ){
if( obj[key] ){
// match values using angular's built-in filter
if ($filter('filter')([obj[key]], query).length > 0){
// don't add objects to results twice if multiple
// keys have values that match query
if( !matched ) {
results.push(obj);
}
matched = true;
}
}
});
});
}
return results;
};
【问题讨论】:
-
我现在意识到我需要将对象转换为数组。我只需要名称键。有什么想法吗?