Данные JS загружают данные, но не отображаются в поле зрения

Я следовал руководству по js-data angular для настройки js-data-angular в моем текущем проекте.

определение модели:

     .factory('shipmentFactory',
    function(DS) {
      return DS.defineResource({
        name:'ShipmentInstructions',
        idAttribute:'id',
        basePath:'apiEndpoint'
      }
        );
    }).run(function (shipmentFactory){})

В моем контроллере:

.controller('ShipListCtrl', function($scope,shipmentFactory) {
    shipmentFactory.findAll().then(function(shipmentInstructions){
      $scope.shipments = shipmentInstructions;
      console.log($scope.shipments)
    });
});

На мой взгляд, я пытаюсь перебрать возвращенный объект, используя ng-repeat, но ничего не отображается. Я знаю, что моя конечная точка получена, и данные возвращаются, потому что моя консоль отображает возвращенный объект отгрузки.

Учебник упоминает, как загрузить данные в представления, но выглядит для тех, кто использует ngRoute. Я использую ui-router в своем текущем проекте и столкнулся с большим количеством проблем, когда попытался разрешить этот ресурс в этом состоянии.

Этот ресурс используется в представлении, которое включено в другое представление - представление шаблона для состояния.

Просто ищите какое-то руководство о том, как сделать так, чтобы мои данные отображались на мой взгляд, пожалуйста, и заранее спасибо.

Пересмотренная модель отгрузки:

  .factory('shipmentFactory',
    function(DS) {
      return DS.defineResource({
        name:'ShipmentInstructions',
         idAttribute:'id',
            basePath:'apiEndpoint',
        cacheResponse: true,
        afterFindAll: function(data, cb){
          //extract the array from that nested property
          shipmentsArray = [];
          //forloop to push every item returned to
          for(var i = 0; i < data.shipmentInstructions.length; i++ ){
            shipmentsArray.push(data.shipmentInstructions[i]);
          }
          cb(null,shipmentsArray)
        }
      }
        );
    }).run(function (shipmentFactory){})/*makes sure shipmentFactory gets defined*/

1 ответ

Решение

Ваш массив инструкций по отправке вложен в свойство "shipmentInstructions", но по умолчанию js-data ожидает, что сами данные будут массивом.

Вам нужно извлечь массив из этого вложенного свойства. Что-то вроде afterFind или же afterFindAll крюк будет хорошим местом для этого. Смотрите мой ответ на другой вопрос Stackru.

Другие вопросы по тегам