javascript - 来自多个字段的 Angular Typeahead 过滤器

标签 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" />

我尝试过编辑 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" />

并在你的 Controller 中声明

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

关于javascript - 来自多个字段的 Angular Typeahead 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117120/

相关文章:

需要 Angularjs Ui 网格分组格式

javascript - AngularJS - 找到折叠动画的结尾

javascript - 如果在不使用 javascript 的情况下未启用 javascript,请发出警告?

jquery - SVG 元素上的 Angular 动画

javascript - 动态添加具有过渡持续时间、可见性和不透明度的 CSS 类在 Chrome 中不起作用

javascript - 如何对 vcRecaptchaService.execute() 使用 .then 方法?

javascript - 为什么我的 Async 和 Await 仍然没有完成序列执行的工作

javascript - AngularJS 分页只显示一页

javascript - JavaScript 中的舍入浮点值

javascript - 原型(prototype) - addEventListener Click - JavaScript