我有两个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。
我在这里错过了什么?
答案 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];