Я пытаюсь создать карту плитки для игры с использованием ng-repeat, и у меня возникают проблемы с кодом ng-repeat, ответственным за отдельные плитки в строке. Если бы это был ваниль JS, у меня не было бы никаких проблем, но это уже некоторое время подтачивало меня. I found this answer which seems really close к тому, что я ищу, но мне не удалось выяснить, как применить его к моему конкретному файлу JSON.Создание карты плитки из JSON с использованием AngularJS ng-repeat
HTML
<div class='map' ng-controller='map'>
<div class='map-row' ng-repeat='row in rows'>
<div class='map-tile' ng-repeat='row in rows'>
{{ row.data[$index] }}
</div><!-- end of .map-tile -->
</div><!-- end of .map-row -->
</div><!-- end of .map -->
Контроллер
app.controller('map', function($scope, $http) {
$http.get('/map.json')
.success(function(response) {
$scope.rows = response.rows;
});
});
JSON
{
"rows": [
{
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
},
{
"data":[1, 0, 0, 3, 2, 2, 2, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
},
{
"data":[1, 0, 3, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1]
},
{
"data":[1, 0, 3, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
}
}
(усеченное для экономии места .)
Результат
Проблема с результатом является то, что нг-повтор инструкции итерация каждой строки неправильно - я не могу понять, что я должен положить в секунду нг-повтор на этой строке вместо «строки в строках»:
<div class='map-tile' ng-repeat='row in rows'>
Ниже изображение выделяя элементы массива, которые обнаруживаются в выходных данных для каждой строки:
Спасибо! Я знал, что я думал о том, что строки массивов против Cols ошибаются, поэтому ваш ответ действительно разъясняет это. К сожалению, в отношении углового синтаксиса, когда я проверяю ваш ответ, я получаю ошибку «повторного ключа в репитере»: https://docs.angularjs.org/error/ngRepeat/dupes?p0=col%20in%20row.data&p1 = номер: 1 & р2 = 1. Поэтому я все еще охочу за правильным способом набирать это при использовании ng-repeat, но по крайней мере я визуализирую массивы правильно сейчас :) – Candlejack
О да. Вы должны добавить 'track by $ index', так как массив' data' имеет повторяющиеся значения (числа). Обновлен ответ. – c05mic
Спасибо, просто протестирован и отлично работает :) – Candlejack