匹配AngularJS typeahead上的多个对象属性值

时间:2015-01-21 14:32:10

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

我想让Angular Bootstrap UI typeahead与多个属性匹配。如果我有这样的对象数组:

{
    "city":"New York",
    "region":"NY",
    "country":"USA"
},
{
    "city":"London",
    "region":"England",
    "country":"UK"
}

可以预先匹配3个属性(城市,地区,国家/地区)中的任何一个,如果匹配,则在结果下拉列表中将所有字符串作为字符串返回。

如果用户输入“NY”,则应返回并显示

New York, NY, USA

如果用户改为输入“Lon”,则应返回并显示

London, England, UK

我想知道是否有可能做到这一点以及可能是最好的方法?

注意:输入前缀设置为与前导字符匹配。

1 个答案:

答案 0 :(得分:2)

<强> 1。定义模型

$scope.model.addresses = [
    {"city":"New York","region":"NY","country":"USA"},
    {"city":"London","region":"England", "country":"UK"}
];

<强> 2。定义自定义过滤功能

$scope.findAddress = function(keyword) {
   return $filter('filter')($scope.model.addresses , {'$': keyword});
}

'$' - 表示在所有属性中查找

第3。并尝试以这种方式使用

<input typeahead="address for address in findAddress($viewValue)"/>