Angular Typeahead过滤来自多个字段

时间:2014-09-30 09:19:57

标签: javascript angularjs angular-ui-bootstrap

我有一个基于个人姓名过滤的输入。我的person对象有更多字段,而不仅仅是名称(至少{name, surname}),我希望过滤器能够以名字和姓氏为基础工作。

这是当前的预先输入,基于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" />

我已尝试修改filter属性的typeahead部分,但我想我还没找到正确的方法。什么是正确的方式?

1 个答案:

答案 0 :(得分:-1)

你可以在你的范围内声明一个过滤器并使用它

<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
}