0

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*/
4

1 に答える 1

0

出荷指示の配列は「shipmentInstructions」プロパティの下にネストされていますが、デフォルトでは、js-data はデータ自体が配列であると想定しています。

そのネストされたプロパティから配列を抽出する必要があります。afterFindorafterFindAllフックのようなものは、それを行うのに適した場所です。別の StackOverflow の質問に対する私の回答を参照してください。

于 2015-12-18T18:11:31.457 に答える