2013-05-31 2 views
1

Учитывая этот модуль и контроллерПереплет Результаты JSON с сложным объектом с AngularJS

angular.module('contactServices', ['ngResource']). 
factory('ApiKey', function ($resource) { 
    return $resource('/V1/apikeys', {}, { 
     query: {method: 'GET', params: {}, isArray: false} 
    }); 
}); 

function ContactCtrl($scope, ApiKey) { 
    $scope.keys = ApiKey.query(); 
} 

, который возвращает эти данные

{ myObject: [{ id: "1", value: "Value1" }, { id: "2", value: "Value2" }, { id: "3", value: "Value3" }] } 

для этого элемента HTML

<select style="width:350px;" tabindex="2"> 
    <option ng-repeat="k in keys" value="{{k.id}}" >{{k.value}}</option> 
</select> 

Когда страница загружает ресурс захватывает данные, но он возвращает обещание, которое я понимаю концептуально, и вижу, что оно h как возвращенные данные (позднее время загрузки страницы), но выбор никогда не загружается. В какой-то момент я использовал службу $ http и работал, но это было какое-то время назад, и мне очень нравится использовать абстракцию ресурсов, если это возможно.

Спасибо, Стивена

Update

Основываясь на комментариях здесь является обновленным рабочим примером. Фактическое исправление заключалось в том, чтобы захватить объект json и искать объект apiKeys.

<select ng-model="keys" ng-options="k.value for k in keys"></select> 


function ContactCtrl($scope, ApiKey) { 
    ApiKey.query({}, function (data) { 
     $scope.keys = data.apiKeys; <<<<<<<<<<========= the fix 
    }); 
} 
+1

по теме, но я считаю, Угловое предпочитает атрибут выберите нг-опции вместо нг-повтора на элементе опции. –

+0

У вас есть ошибки с консоли? –

+0

@ Кристофер Маршалл благодарит вас за то, что указал мне в правильном направлении, re: выберите ng-options. –

ответ

1

Может быть, вам следует попробовать изменить код на что-то подобное, когда вы вызываете сервисный уровень.

function ContactCtrl($scope, ApiKey) { 
     ApiKey.query({}, function(data){ 
     $scope.keys = data; 
     }); 
    } 

Bhaskara

+0

Bhaskara Kempaiah, ваш ответ приведет меня к исправлению, которое работает. –

Смежные вопросы