22

コントローラーファイルには次のものがあります。

var Subject = $resource('/api/TestAccounts/:action', { applicationId: 3 }, {
   'getSelect': { method: 'GET', params: { action: 'GetSelect' } }
});

Subject.getSelect({ applicationId: 3 },
   function (resp) {
      $scope.testAccounts = resp;
      gridData = null;
   }
);

サーバーコードが実行され、次のように返されます。

[{"id":5,"name":"xxx"},{"id":6,"name":"yyy"}]

ただし、次のエラーが表示されます。

TypeError: Object #<g> has no method 'push'
    at copy (http://127.0.0.1:81/Scripts/angular.js:577:21)

誰かが私が間違っていることを知っていますか?

4

4 に答える 4

49

isArrayサーバーから配列を返す場合は、リソース定義でパラメーターを true に設定する必要があります。

var Subject = $resource('/api/TestAccounts/:action', { applicationId: 3 }, {
  'getSelect': { method: 'GET', isArray: true, params: { action: 'GetSelect' } }
});

参照: AngularJS $resource API

于 2013-04-10T17:52:30.670 に答える
5

オブジェクトを期待し、配列を期待するため、に変更MyService.get(...)しました。MyService.query(...).get().query()

于 2013-10-02T14:53:19.887 に答える
4

この投稿が少し古くなっていることは承知していますが、今日この問題に遭遇したときに解決策を見つけました。以下の投稿に続いて、joelwreed のソリューションを実装しました (スレッドの半分まで)。プッシュを試行する前に宛先がアレイであることを確認し、問題を修正します。

github に提出された問題へのリンク

于 2013-06-15T21:01:21.747 に答える