2014-10-23 4 views
-2

Используя включенное сообщение http, я должен вернуть объект JSON ниже. Я хочу взять данные LeagueDictionary в JSON ниже и создать объект, чтобы я мог использовать его в каждом цикле на моем клиенте, но я не могу обернуть голову тем, как структурировать этот код в HTTP-вызове.AngularJS - Как привязать данные к объекту в объекте JSON

{ 
    "Id": 0, 
    "UserName": null, 
    "NickName": null, 
    "Email": "[email protected]", 
    "Password": null, 
    "Admin": false, 
    "Validated": false, 
    "Key": "oOE0QbOhjK17pNeKDPEFti5On27R3b", 
    "LeagueDictionary": { 
     "1": "League #1", 
     "2": "League #2" 
    } 
} 

используя этот вызов:

$scope.getLeagues = function() { 
     $http({ 
      method: 'POST', 
      url: 'http://xxxxxxxxxxxxxxxxxx', 
      data: ???, 
     }) 
    } 

Если кто-то дать мне толчок о том, как данные связываются, что определенная часть JSON, я ценю помощь. Я не уверен, как удалить раздел LeagueDictionary и сделать из него объект.

+0

Так что вам нужно извлечь то, что в LeagueDictionary и передать его в ваш запрос? – blackmind

+0

Я смущен вашим вопросом. Ожидаете ли вы, что данные JSON вернулись в ответ от POST? Или вы пытаетесь отправить его в тело POST? – ach

+0

Простите, да, если я использую предоставленный http-вызов, этот объект JSON должен быть возвращен. Я хочу использовать часть LeagueDictionary для создания объекта, который я могу использовать в ng-repeat. –

ответ

0

Вы можете настроить сервис, который получает данные, так что вы можете получить $http и такие из вашего контроллера. Скажите ...

app.factory('DataService', function ($http) { 
    return { 
    get: function() { 
     return $http.get('data.json'); // post & url goes here 
    } 
    }; 
}); 

В контроллере используйте then для доступа к данным ответа после promise были разрешены (вылов() и, наконец,() доступны, тоже).

app.controller('MainCtrl', function ($scope, DataService) { 
    DataService.get().then(function (response) { 
    $scope.leagueDictionary = response.data.LeagueDictionary; 
    }); 
}); 

Связанные шаблон HTML будет

<body ng-controller="MainCtrl"> 
    <div ng-show="leagueDictionary"> 
    <span ng-repeat="(key,val) in leagueDictionary"> 
     {{ val }} <br> 
    </span> 
    </div> 
</body> 

Использование данных это дает

imgur


смотри пример plunker здесь http://plnkr.co/edit/j6bmmQ

0

Вы можете получить доступ к свойству LeagueDictionary свойства ответа, а затем перебрать его в ng-repeat. Очевидно, что я не знаю точно, что ваши телескопы выглядеть, но это должно вам начать:

//JS 
$http.post('/someUrl', { 'foo': 'bar' }).success(function(data) { 
    myController.myModel.leagueDictionary = data.LeagueDictionary; 
}); 

//HTML 
<tr ng-repeat="(leagueNum, leagueName) in leagueDictionary">