programing

AngularJS $resource 오류 - TypeError: 개체 #에 'push' 메서드가 없습니다.

javamemo 2023. 10. 22. 19:22
반응형

AngularJS $resource 오류 - TypeError: 개체 #에 'push' 메서드가 없습니다.

제 컨트롤러 파일에는 다음과 같은 내용이 있습니다.

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)

내가 뭘 잘못하고 있는지 아는 사람?

파라미터를 설정해야 합니다.isArray서버에서 배열을 반환하는 경우 리소스 정의에서 true로 변경합니다.

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

참조: AngularJS $resource API

기본적으로 GET은 개체 {}을(를) 기대하고, QUREY는 배열[]을 기대합니다.사용자의 경우 Web API는 GET에 대한 배열을 반환하므로 GET에 대한 isArray 플래그를 true로 설정해야 합니다.웹 API가 개체를 반환한 경우 GET의 기본 동작이므로 해당 플래그를 재설정할 필요가 없습니다.

옷을 갈아입었습니다.MyService.get(...)로.MyService.query(...)왜냐면.get()물건을 기대하고 그리고.query()배열을 기대합니다.

이 게시물이 좀 진부한 것은 알지만 오늘 이 문제에 부딪히면서 해결책을 찾았습니다.아래 게시물에 따라 조엘위드의 솔루션을 구현했습니다(실의 절반 아래).푸시를 시도하기 전에 대상이 배열인지 확인하여 문제를 해결합니다.

깃허브에 저장된 이슈에 대한 링크

언급URL : https://stackoverflow.com/questions/15932422/angularjs-resource-error-typeerror-object-g-has-no-method-push

반응형