AngularJS — проблема $resource + ng-repeat

В моем html файле у меня есть следующая таблица:

<div ng-controller="InstructorCtrl">
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>Title</th>
          <th>Name</th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="instructor in instructors">
          <td>{{instructor.title}}</td>
          <td>{{instructor.name}}</td>
        </tr>
      </tbody>
    </table>
</div>

Вот как выглядит контроллер:

angular.module('angularFrontendApp')
  .controller('InstructorCtrl', function ($scope, Instructor) {
    $scope.instructors = [];
    $scope.instructors = Instructor.query();
  });

Залитый Instructor стоит с завода:

angular.module('angularFrontendApp')
  .factory('Instructor', function ($resource) {
    return $resource('http://localhost:9000/api/instructor');      
  });

Большую часть времени таблица отображается просто отлично:

Правильный рендеринг

Но я заметил, что когда я перезагружаю страницу несколько раз, таблица иногда выглядит так:

Неправильный рендеринг

Я думал, что проблема возникает, когда ng-repeat запускается, а $promise $resource все еще не решена. Поэтому я установил точку останова в своем бэкэнд-методе, который возвращает список instructors. Когда выполнение было остановлено, на странице отображался только заголовок таблицы. Когда выполнение было продолжено и данные отправлены с сервера, таблица отобразилась просто отлично. Мне кажется довольно странным.


person Dmitriy Tkachenko    schedule 23.01.2015    source источник
comment
можете ли вы опубликовать результат Instructor.query().   -  person Toretto    schedule 23.01.2015
comment
проверьте ответ http-вызова с помощью инструментов разработчика Chrome или firebug или чего-то еще, когда перезагрузка вызвала пустую таблицу. Это вполне может быть проблемой с вашим бэкэндом. Также $scope.insstructors = []; не требуется, метод query(..) вернет пустой массив.   -  person Jon    schedule 23.01.2015


Ответы (1)


Спасибо за ответы.

Я внимательно изучил, какие методы вызывались в бэкэнде. На самом деле это редкая проблема на стороне сервера, которая испортила маршрутизацию.

person Dmitriy Tkachenko    schedule 23.01.2015