使用id在angular.js中搜索

时间:2015-07-09 17:13:56

标签: javascript jquery json angularjs

我有两个json:

all_users

    "all_users":
    {
    "4":{
    "user_id":4,
    "user_name":"Miranda"
     },
    "7":{
    "user_id":7,
    "user_name":"seconduser"
    }

tickets

"tickets":
[{
"ticket_id" : 12,
"created_by" : 7,
"assigned_to": 6
}] 

现在,从json tickets开始,我需要搜索创建故障单的人,即created_by。但是,由于这是id,我无法使用名称直接搜索它。 在做了一些研究之后,我实现了这个:

<input id="created-by-input" type="text" ng-model="search.created_by" placeholder="Created by" typeahead="user.user_id as user.user_name for user in transformationFunction(all_users, $viewValue) | filter:{user_name:$viewValue}"  class="form-control">

范围:

$scope.transformationFunction = function(object) {
    var newArray = [];
    for(var key in object) {
      newArray.push({user_id: key, user_name: object[key].user_name});
  }
  return newArray;
  console.log(newArray)
};

然而,当我搜索时,我开始输入时会收到所有相关用户。此外,当我点击它们时,搜索过滤器工作并显示结果。但是,当我在搜索时单击下拉列表中的用户时,文本字段会显示ID而不是用户名。

例如:我开始输入 Mira ,下拉列表显示Miranda,当我点击它时,文本字段显示我4。

我在这里错过了什么?

1 个答案:

答案 0 :(得分:0)

如果您将用户存储为数组 e.g。

$scope.users = [{
     id: 1,
     name: "Fancyname"
 },
 {
     id: 2,
     name: "Fancyname2"
 }]

您可以像这样使用.map函数:

var index = $scope.users.map(function(x) {return x.id; }).indexOf(idYourAreLookingFor);
var user= $scope.users[index];