2013-07-18 2 views
1

Web API 백엔드를 사용하는 angularJS 사이트가 있습니다. 내가 저장하려고 노력하고 내가 여기AngularJS save()가 웹 API에서 잘못된 응답을 반환합니다.

public enum ResultType 
{ 
    Success, 
    InvalidAccountNumber, 
    InvalidAddress, 
    NotFound, 
    Incomplete, 
    Error, 
    Unauthorized 
} 

아래에 정의 된 resulttype 열거를 다시 얻을 것으로 예상하고하는 것은 내 자원을 설정하는 데 사용되는 코드입니다.

app.factory('NotificationOptInApi', function ($resource) { 
return $resource(API_SOURCE + 'NotificationOptIn', {}, { 
    'save': { method: 'POST', isArray: true } 
}); 

});

여기

여기
$scope.saveNotifications = function() { 
    var result = NotificationOptInApi.save($scope.notifications, function() { 
     // check for failure 
     if (result !== 'Success') { 
      $scope.saveError = result; 
      return; 
     } 
    }); 
}; 

내가 여기

{0: "S", 1: "u", 2: "c", 3: "c", 4: "e", 5: "s", 6: "s", $get: function, $save: function, $query: function, $remove: function, $delete: function} 

을 반환받을를 반환하는 코드가 무엇을 저장하는 내 전화입니다. 제발 내가 reusltType 대신 목록을 반환하려고하는 동안

public List<ResultType> Post([FromBody]dynamic notificationSubscriptionHolder) 
    { 
     List<NotificationSubscriptionData> notificationSubscriptions = notificationSubscriptionHolder.ToObject<List<NotificationSubscriptionData>>(); 

     Logger.Info("Update Account Notifications", string.Format("<updateAccountNotificationsToUser><NotificationSubscriptionData>{0}</NotificationSubscriptionData><user>{1}</user></updateAccountNotificationsToUser>", notificationSubscriptions, this.CurrentIdentity.Name)); 
     try 
     { 
      return _accountManager.UpdateAccountNotifications(this.CurrentIdentity.Name, notificationSubscriptions); 
     } 
     catch(Exception ex) 
     { 
      return new List<ResultType>() { ResultType.Error }; 
     } 
    } 

이것은 다른 곳에서 문제없이 작동했습니다. 나는 결과를 확인할 수 있고 그것은 성공 일 것이다. 여기에서 볼 수있는 차이점은 IsArray를 true로 설정해야하므로 배열을 저장한다는 것입니다. 현재 저장중인 배열에 1 개의 항목이 있습니다. 내가 얻는 응답은 일련의 문자입니다. 그들은 "성공"을 철자합니다.

배열을 저장하더라도 배열로 내 응답을 다시받지 못하게 할 방법이 있습니까? 배열을 반환해야한다고 생각한 목록을 반환하려고했습니다. 이 작업을 수행하면 배열에 1 개의 항목이 있지만 그 1 개의 항목에는 성공한 문자 배열이 있습니다. 각 항목은 응답 수신을 통해 진정한 ngResource 모듈의 반복은

배열이되고 그들이 각 사용하고 이것을 Resource.For의 새로운 인스턴스를 생성합니다

+0

각도 코드 –

+0

을 표시 할 수 있습니까? 각도 문서의 IsArray는 반환 된 개체가 배열인지 여부를 나타내는 것으로 가정하고 ResultType 만 반환하지만 IsArrya를 false로 설정하면 푸시 오류가 발생합니다. 사실로 설정하면 성공적으로 저장할 수 있지만 Array를 다시 가져옵니다. –

답변

0

내가 어떤 결론에 도달 한 소스 코드를 읽기 응답과 자원 객체 사이를 복사하십시오. angular.copy는 배열과 객체 유형에서만 올바르게 작동하지만 배열의 문자를 제대로 표시하지 못하도록 문자열 인 [ "success"]를 보냈습니다. 에디터에서 아래 코드를 시도하면 답을 얻을 수 있습니다.이 문제를 해결하려면 [{Message : "Success"}]와 같은 객체를 반환해야합니다.

var obj = angular.copy ('success', {}) ; 알림 (obj);

관련 문제