仅搜索ui.bootstrap typeahead中的特定字段

时间:2014-01-21 10:26:47

标签: javascript angularjs angular-ui angular-ui-bootstrap

我正在改进我的ui.bootstrap typeahead添加一些awesomne​​ss,但我在这个上苦苦挣扎。

我创建了一个小型的Plunker来证明我的问题:
http://plnkr.co/edit/u2Le37?p=preview

关于这个问题的两个字:
我有这个对象数组填充我的$scope.data,但我无法告诉typeahead仅使用特定字段来搜索结果

$scope.data = [
  {
    name: 'Mario',
    desc: 'Super Plumber',
    id: 0,
    type: 'good'
  },
  {
    name: 'Luigi',
    desc: 'Assistant Plumber',
    id: 1,
    type: 'good'
  }, 
...


每当您在预先搜索时,您都会搜索对象中的每个字段,甚至是typeid

我尝试过这样的解决方案,但没有成功:

typeahead="datum.name as ( datum.name +', '+ datum.desc) 
    for datum in data | filter:$viewValue | limitTo:8"

---> no change


typeahead="datum as ( datum.name +', '+ datum.desc) 
    for datum.name in data | filter:$viewValue | limitTo:8"

--> no match

如何将搜索限制为name字段?

1 个答案:

答案 0 :(得分:12)

神奇的线条如下

filter:{name: $viewValue}

这会将搜索限制为仅名称字段。请查看ng-filter

的此文档
  

对象:模式对象可用于过滤特定属性   数组包含的对象。例如 {name:“M”,phone:“1”}   谓词将返回具有属性名称的项目数组   包含“M”和包含“1”的财产电话。一个特殊的财产   可以使用名称​​ $ (如 {$:“text”} )来接受任何匹配   对象的属性。这相当于简单的子串   如上所述匹配字符串。

Plunker已更新