У меня проблема с моим приложением angularjs, когда мое приложение перенаправляется на неправильную страницу при использовании массива ng-repeat для определения маршрута.
данные выглядят так и доступны в контроллере person:
[
{
"name":"AJ lastname",
"img_name":"AJ_lastname",
"location":"Baltimore, Maryland",
"info":"stuff"
},
{
"name":"Albert lastname",
"img_name":"Albert_lastname",
"location":"Boston, Massachusetts",
"info":"stuff"
} // ... more data
]
html: (тег привязки ссылается на человека на основе его индекса в массиве (я считаю, что это может быть то, что мне нужно изменить, чтобы решить проблему, но я не уверен)
<ul class="main-list">
<li class="list-item fade" ng-repeat="student in students | filter:filter">
<a href="/#person/{{$index}}">
<img class="portrait listimg" ng-src="/images/{{student.img_name}}.jpg" alt="portrait of {{student.name}}">
<h2>{{student.name}}</h2>
<h4>{{student.location}}</h4>
</a>
</li>
</ul>
Маршрутизация из angular: (маршрут с '/ person /: itemId' направляется на страницу, специфичную для конкретного пользователя, где их индекс в массиве определяет их идентификатор)
app.config(function ($routeProvider, $httpProvider) {
$routeProvider
.when('/list', {
templateUrl: './js/templates/list.html',
controller: 'ListController'
})
.when('/person/:itemId', {
templateUrl: './js/templates/person.html',
controller: 'PersonController'
})
.otherwise('/list');
});
Вот контроллер динамической страницы. Он отлично работает с исходным массивом, но как только я пытаюсь отсортировать массив, индекс больше не соответствует правильному ученику.
app.controller('PersonController', function ($scope, $http, $routeParams) {
$scope.person = 'Someone\'s name';
$http.get('../js/students.json').success(function (data) {
$scope.allStudents = data;
$scope.studentId = $routeParams.itemId;
$scope.student = data[$scope.studentId];
});
Таким образом, функциональная проблема заключается в том, что индекс применяется к первому студенту в большом массиве данных. Кажется, он работает отлично, и правильные данные заполняют страницу, но когда я использую ввод html / text для фильтрации списка, исходные индексы обновляются на стороне html, и они не соответствуют исходному массиву. Таким образом, маршрутизация отправляет их не на ту страницу.
Как заставить работать маршрутизацию даже для отфильтрованного списка?