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

dom*_*kun 2 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'
  }, 
...
Run Code Online (Sandbox Code Playgroud)


每当您在预先搜索时,您将搜索对象中的每个字段,甚至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
Run Code Online (Sandbox Code Playgroud)

我怎样才能将搜索限制在该name字段中?

Ana*_*and 13

神奇的线条如下

filter:{name: $viewValue}
Run Code Online (Sandbox Code Playgroud)

这会将搜索限制为仅名称字段.关于ng-filter,请查看此文档

对象:模式对象可用于过滤数组包含的对象的特定属性.例如{name:"M",phone:"1"} 谓词将返回一个项目数组,其属性名称包含"M",属性手机包含"1".可以使用特殊属性名称$(如{$:"text"})来接受对象的任何属性的匹配.这相当于如上所述与字符串匹配的简单子字符串.

Plunker更新