Я новичок в угловой. Я подаю заявку в Лигу Легенд. Это не новое, но доказательство концепции.
файлы
Индекс
<body>
<div ng-controller="SummonerController">
<form class="well form-search">
<label>Search:</label>
<input type="text" ng-model="keywords" class="input-medium search-query" placeholder="Keywords...">
<button type="submit" class="btn" ng-click="search()">Search</button>
<p class="help-block">Type in a LeagueofLegends.com Champion Name.</p>
</form>
<pre ng-model="result">
<h1>{{summoner.name.data}} </h1>
<h2>Level: {{summoner.level}} </h2>
<ul>
<li ng-repeat="matches in data">{{matches}}</li>
</ul>
</pre>
</div>
</body>
</html>
Controllers.js
«использовать строгое»;
angular.module('myApp', [])
.controller('SummonerController', function SearchCtrl($scope, $http) {
$scope.url = 'process.php'; // The url of our search
// The function that will be executed on button click (ng-click="search()")
$scope.search = function() {
// Create the http post request
// the data holds the keywords
// The request is a JSON request.
$http.post($scope.url, { "data" : $scope.keywords}).
success(function(data, status) {
$scope.status = status;
$scope.data = data;
// Show result from server in our <pre></pre> element
$scope.result = data;
$scope.summoner = data.summoner;
$scope.matches = data.matches.array;
})
.
error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
});
};
});
process.php
<?php
// The request is a JSON request.
// We must read the input.
// $_POST or $_GET will not work!
$apiKey = "71e73084-6c8e-44a3-b46e-9bc929cd70af";
$data = file_get_contents("php://input");
$objData = json_decode($data);
$url = 'https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' . $objData->data . '?api_key=' . $apiKey;
$array = array("summoner" => array('level' => '', 'name' => ''), "matches" => array() );
$data = curl_download($url);
$var = json_decode($data, true);
/* Set X for Array Loop */
$x = 0;
foreach($var as $key => $summoner) {
foreach($summoner as $item => $value) {
if($item == "summonerLevel")
$array["summoner"]["level"] = $value;
$array["summoner"]["name"] = $objData;
if($item == "id") {
$id = $value;
$matchDownload = curl_download("https://na.api.pvp.net/api/lol/NA/v1.3/game/by-summoner/" . $id . '/recent?api_key=' . $apiKey);
$matchData = json_decode($matchDownload, true);
foreach($matchData["games"] as $item => $game) {
if(!empty($champ['winner'])) {
$array["matches"][$x]["winner"] = "Won";
} else {
$array["matches"][$x]["winner"] = "Lost";
}
$array["matches"][$x]["mode"] = $game['gameMode'];
$array["matches"][$x]["type"] = $game['gameType'];
$array["matches"][$x]["subtype"] = $game['subType'];
$array["matches"][$x]["createdate"] = $game['createDate'];
$array["matches"][$x]["ipearned"] = $game['ipEarned'];
/* Each Game's Champ */
$champdata = curl_download("https://global.api.pvp.net/api/lol/static-data/na/v1.2/champion/" . $game['championId'] . '?api_key=' . $apiKey);
$champ = json_decode($champdata, true);
$array["matches"][$x]["champion"]["name"] = $champ["name"];
$array["matches"][$x]["champion"]["title"] = $champ["title"];
$array["matches"][$x]["champion"]["level"] = $summoner["summonerLevel"];
$array["matches"][$x]["champion"]["id"] = $champ["id"];
$x++;
}
}
}
}
$return = json_encode($array);
echo $return;
?>
Пример возвращаемых данных
[
{
"winner":"Lost",
"mode":"CLASSIC",
"type":"MATCHED_GAME",
"subtype":"RANKED_SOLO_5x5",
"createdate":1440261853283,
"ipearned":0,
"champion":{
"name":"Jinx",
"title":"the Loose Cannon",
"level":30,
"id":222
}
},
{
"winner":"Lost",
"mode":"CLASSIC",
"type":"MATCHED_GAME",
"subtype":"RANKED_SOLO_5x5",
"createdate":1425360797949,
"ipearned":51,
"champion":{
"name":"Jinx",
"title":"the Loose Cannon",
"level":30,
"id":222
}
},
{
"winner":"Lost",
"mode":"CLASSIC",
"type":"MATCHED_GAME",
"subtype":"RANKED_SOLO_5x5",
"createdate":1425185899166,
"ipearned":77,
"champion":{
"name":"Jinx",
"title":"the Loose Cannon",
"level":30,
"id":222
}
},
{
"winner":"Lost",
"mode":"CLASSIC",
"type":"MATCHED_GAME",
"subtype":"NORMAL",
"createdate":1409209618048,
"ipearned":62,
"champion":{
"name":"Jinx",
"title":"the Loose Cannon",
"level":30,
"id":222
}
}
]{
"level":30,
"name":{
"data":"MEepMorp"}
}
1) Могу ли я ng-повторить через ключи массива для совпадений?
В этом случае ng-repeat = «match in data» возвращает массив с двумя элементами, каждый из которых является массивом. Итак, многомерный массив.
Конечно, ng-repeat = «match in data» попадет на первый уровень вашего объекта, затем вам нужно будет сделать еще один, чтобы перейти на второй.
Вопрос: Вы пропускаете запятую там?
]{
"level":30,
"name":{
"data":"MEepMorp"}
}
Я не правильно понял, как работает нг-повтор.
Однажды я изменил это на ..
Режим соответствия: {{item.mode}}
Работало нормально.