Что я делаю, это использовать API и возвращать массив символов. Каждый персонаж имеет набор предметов в своем инвентаре. Когда я впервые получаю информацию, она дает мне только идентификатор элемента. Затем я должен использовать этот идентификатор и сделать другой вызов API для получения информации, связанной с этим элементом, чтобы я мог правильно получить от него имя и статистику.Выполнение функции AngularJS в цикле
<div class="gwapi_content row" ng-repeat="character in characters" ng-if="character.profession == 'Warrior'">
<div class="character-header">
<h3>{{character.name | uppercase}} <img src="img/{{character.profession}}_icon.png" alt=""></h3>
<h5 class="subheader">{{character.race}} {{character.profession}}</h5>
</div>
<div class="column photo" style="background-image: url('../img/{{character.name}}.jpg')">
<img src="img/{{character.profession}}_icon.png" alt="">
</div>
<div class="column info">
<div class="panel-content">
<ul>
<li>NAME: {{character.name}}</li>
<li>CLASS: {{character.profession}}</li>
<li>
LEVEL: {{character.level}}
</li>
<li>
Race: {{character.race}}
</li>
<li>
Gender: {{character.gender}}
</li>
<li>Birthday: {{character.created | date: 'MMMM dd, yyyy'}}</li>
<li>Deaths: {{character.deaths}}</li>
</ul>
</div>
</div>
<div class="column equipment">
<div class="panel-content">
<ul class="">
<li>
<ul class="li equipment-list">
<li ng-repeat="equip in character.equipment" ng-init="getEquipmentDetails(equip.id)">
<span>
{{equip.id}} {{details.name}}
</span>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="clear"></div>
</div>
Как вы можете видеть, что я звоню функцию элемента при получении массива из списка элементов: нг-повтора = «оборудуют в character.equipment» нг-INIT = "getEquipmentDetails (equip.id) "
Здесь я столкнулся с проблемой. Всякий раз, когда я вызываю этот вызов API с идентификатором, все имена просто заменяются на последний, который он загружал. Как видно на изображении ниже.
Я уверен, что я делаю это часть неправильно, но я не испытал это раньше, поэтому я не уверен, как подходить к этому. Мне нужно, чтобы каждый персонаж получал свой собственный список предметов с соответствующими именами и статистикой.
Вот JavaScript:
$scope.getAccount = function(){
$http.get('https://api.guildwars2.com/v2/characters?access_token='+access_token+'&page=0')
.success(function(response, status, headers, config){
// console.log(response);
$scope.characters = response;
})
.error(function(data, status, headers, config) {
console.log("Error retreiving data");
// console.log(data + '\n' + status + '\n' + headers +'\n' + config);
});
};
$scope.getAccount();
$scope.getEquipmentDetails = function(id){
$http.get('https://api.guildwars2.com/v1/item_details.json?item_id=' + i)
.success(function(response, status, headers, config){
$scope.details = response;
})
.error(function(response, status, headers, config){
console.log('No info');
});
};
Не так много углового разработчика, но я чувствую, что вы должны выполнять эту просьбу в своем контроллере, чтобы получить все детали оборудования. Затем установите это как область видимости и переместите ее в шаблон. – agmcleod
Единственное подходящее использование ngInit - это сглаживание специальных свойств ngRepeat, как показано в демонстрации ниже. Помимо этого случая, вы должны использовать контроллеры, а не ngInit, чтобы инициализировать значения в области. https://docs.angularjs.org/api/ng/directive/ngInit –
Спасибо @JumarPolanco –