来自多个字段的角度Typeahead筛选器

Angular Typeahead filter from more than one field

本文关键字:Typeahead 筛选 字段      更新时间:2023-09-26

我有一个基于人名进行筛选的typeahead。我的person对象有更多的字段,而不仅仅是name(至少是{name, surname}),并且我希望过滤器基于name和姓氏来工作。

这是当前的预编型,基于angular-ui-bootstrap:

<input type="text" id="friendInput" placeholder="Friend's name"
 typeahead="friend for friend in friendsList | filter:{name:$viewValue}"
 typeahead-template-url="friendDropdown.html" ng-model="chosenFriend" />

我尝试过编辑typeahead属性的filter部分,但我想我没有找到正确的方法。正确的方法是什么?

您可以在您的作用域中声明一个过滤器并使用它

<input type="text" id="friendInput" placeholder="Friend's name"
  typeahead="friend for friend in friendsList | filter:nameFilter"
  typeahead-template-url="friendDropdown.html" ng-model="chosenFriend" />

在你的控制器中声明

$scope.nameFilter = function(friend) {
    var regex = new RegExp('' + $scope.chosenFriend, 'i');
    return regex.test(friend.name) || regex.test(friend.surname); // test on both field
}