JS-Data加载数据但不在视图中呈现

时间:2015-12-18 17:37:34

标签: angularjs jsdata js-data-angular

我已经按照js-data角度教程在我当前的项目中设置了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迭代返回的对象,但不显示任何内容。我知道我的端点被点击并且返回数据是因为my console displays the returned shipment object

本教程提到了如何将数据加载到视图中,但看起来是那些使用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 个答案:

答案 0 :(得分:0)

您的装运说明数组嵌套在“shipmentInstructions”属性下,但默认情况下,js-data要求数据本身为数组。

您需要从该嵌套属性中提取数组。像afterFindafterFindAll钩子这样的东西是一个很好的地方。请参阅另一个StackOverflow问题的my answer