2016-04-20 5 views
4

Im получает значения json из http-сервиса для каждого идентификатора .. пытаясь дать выпадающий список со списком имен и идентификаторов в качестве ключа для хранения. Если у меня есть это в моем HTML
select key/value in angularjs

<select> 
<option ng-repeat="(key, value) in data" value="{{key}}">{{value}}</option> 
</select> 


это в моем контроллере

$http.get('/api/v1/secure/admin/groups/v/users').success(function(response) { 
    var j=[]; 
    var k=[]; 

    $scope.data=[]; 

    $scope.vId=[]; 
    $scope.vName=[]; 

    console.log(response[0]._id)//getting 1st id 
    console.log(response[0].name.prefix+" "+response[0].name.first+" "+response[0].name.last)//getting name 

    for (var i =0; i<response.length; i++) { 

    k=(response[i]._id); 
    j= (response[i].name.prefix+" "+response[i].name.first+" "+response[i].name.last); 

    console.log("list of visit manager: "+$scope.vManagerName+" id "+$scope.vManagerId); 

    }; 

    $scope.data={ 
    $scope.vManagerId.push(k) : $scope.vManagerName.push(j) 
    } 

}); 

но неопределенный ... пожалуйста, помогите .. спасибо заранее

+0

что структура ответа? –

+0

Что не определено и, пожалуйста, укажите структуру ответа –

ответ

2

Вам не нужно отобразить на контроллере, как вы делаете неправильно

Попробуйте как этот

View

<select ng-model="model" ng-options="d._id as d.name.prefix+' '+d.name.first+' '+d.name.last for d in data"> 
</select> 

CTRL

$scope.data=response 

DEMO

0

Почему бы вам не сделать это в своей петле:

$scope.data.push({"key":k, "value" :j}) ; 

Тогда вы будете иметь это в вашем HTML

<select> 
<option ng-repeat="kv in data" value="{{kv.key}}">{{kv.value}}</option> 
</select>