2014-11-26 1 views
0

AngularJS의 $ 리소스 모듈을 사용하여 "약속"을 서버와 앞뒤로 동기화합니다. 약속에는 제목, 설명 및 시간이 포함됩니다.AngularJS로 서버 업데이트

서버는 api/appointments에 게시 된 JSON 객체 POST를 통해 새 약속을 허용합니다.

{ 
    title: "Doctors Visit", 
    description: "Check up", 
    time: "1:00pm" 
} 

이제 서버가 약속을 저장하고 객체에 ID를 추가하고 JSON 응답 렌더링 : 나는 $ 자원 모듈을 사용하는 경우

{ 
    id: 23, 
    title: "Doctors Visit", 
    description: "Check up", 
    time: "1:00pm" 
} 

문제는, 새로운을 저장됩니다 약속, id 특성을 로컬 JS 개체에 저장하지 않습니다.

var Appointment = $resource('example.com/api/appointments/:id.json', {id: "@id"}, { 
     update: {method: "PUT"} 
    }); 

var appointment = new Appointment(); 
appointment.title = "CEO Meeting"; 
appointment.description = "Meeting with the CEO"; 
appointment.time = "2:00pm" 
appointment.$save() 

appointment 변수는 응답이 끝난 후에도 지금까지 할당 된 속성 id이 없습니다.

가장 좋은 방법은 무엇입니까?

+0

내가 확인하기 위해 자원을 사용하지 않는하지만 난 당신이 응답 헤더에서 정보를 얻을 것으로 판단, ID가 헤더에 있어야를 ('위치'). – alou

답변

0

문제는 내가 지금과 같은 형태로 바인더 제본 된 모달로 새로운 약속 객체를 전달했다이었다 폼의 속성을 가진 POJO.

은 내가 $ 자원 객체에 그 변환하고 모든 일을 시작 :

$scope.saveAppointment = function(appt) 
{ 
    appt = new Appointment(appt); //Appointment was made using $resource 
} 
1

ID가 서버에 생성되어있을 가능성이 있으므로 로컬 변수에 ID를 저장하지 않을 가능성이 높습니다. 개체의 ID를 검색하려면 새로 만든 개체의 ID를 포함하도록 서버의 응답 개체를 변경하거나 개체를 만든 후 GET 요청을 게시하여 개체의 ID를 검색 할 수 있습니다. saveAppointment 기능은 자원을 통과하지되었다

<form name="appointmentForm" ng-submit="saveAppointment(appt)"> 
... 
</form> 

, 그것이 전달되는되었습니다

+0

"새로 생성 된 객체의 ID를 포함하도록 서버의 응답 객체를 변경합니다."- 위의 두 번째 코드 단편에 표시된대로 이미이 작업을 수행합니다. Angular가 서버의 응답으로 객체를 자동으로 업데이트한다고 생각했습니다. – you786

+0

@ you786 내 경험에 나온다. [docs] (https://docs.angularjs.org/api/ngResource/service/$resource)의 맨 아래에있는 신용 카드 리소스 예제는 – Clive

+0

을 지원하는 것으로 보입니다. 문제를 발견했다고 생각합니다. 업데이트를 참조하십시오. 어쨌든 당신의 도움을 +1하십시오. – you786