2013-02-26 3 views
-1

보기를 업데이트하지 내 응용 프로그램 나머지 API 및 개체가 만들어집니다. 페이지가 새로 고쳐지면 notes에 나열된 메모를 볼 수 있습니다. 그러나 내 지식에 따라 $resource은 뷰 자체를 업데이트해야합니다. 그것은 중요 docs

에서

견적은 $ 리소스 객체 메소드를 호출하면 즉시 빈 참조 (오브젝트 또는 어레이 끝나면 IsArray에 따라)를 반환 실현한다. 서버에서 데이터가 반환되면 기존 참조에 실제 데이터가 채워집니다.

나는 다음과 같이 :

leave_note: function(){ 
    var note = New Note(); 
    note.desc = desc; 
    note.title = title; 
    note.object_id = oid; 
    note.$save(); 
    $rootScope.$apply(); 
} 

하지만 위의 경우에 호출이 REST API에 보내기 전 (함수로 정의 할 때까지 leave_note 방법에서 $rootScope.$apply을 사용할 수없는 생각이있는 undefined 요청 방법.

내가 생각할 수있는 또 다른 문제는 $scope.note이 정의되어 있지 않지만 REST API에서 전송 된 메모 목록 인 $scope.notes이 있다는 것입니다. 어쩌면 $scope.note 업데이 트되고 있지만 note 개체를 렌더링하지 오전 notesng-repeat을 사용하여 템플릿에서 변경 내용을 볼 수 없습니다.

또한 새로운 메모가 저장되면 메모 개체를 다시 페치했지만 기본적으로 모든 메모를 제거한 다음 못생긴 것으로 보이는 페이지를 다시 렌더링합니다 (페이지 새로 고침과 거의 비슷 함).

달성하려고하는 것은 note 개체가 저장 되 자마자 기존 메모에 새 메모가 병합되기를 바랍니다. 나를 안내 해줘. 감사합니다.

+0

downvoter? 당신의 downvote를 설명하십시오. – Amyth

답변

1

$rootScope.$apply을 사용할 필요가 없으므로 $resource API 문서를 이해했습니다.

설명서에 다음과 같이 언급되어 있습니다. "서버에서 데이터를 반환하면 기존 참조에 실제 데이터가 채워집니다.". 즉, $scope.notes = NoteService.get_for_model();을 수행 할 때 $scope.notesNoteService.get_for_model GET 요청에서받은 (향후) 데이터가 채워지도록 요청하고 있음을 의미합니다. $resource API는 정확히 수행 할 책임이 있습니다. $scope.notes 모델을 업데이트하십시오. 을 언급하지 않으므로 동일한 서비스에서 POST를 수행 할 때 데이터가 자동으로 업데이트됩니다.

새 노트 (POST)를 추가 한 후 $scope.notes 모델을 업데이트하고, 전체 노트 목록을 요청하는 POST 성공 콜백에 $scope.notes 모델에 직접 새 메모를 추가하려고하지 않으려합니다 :이 크게 향상 될 수

var note = NoteService.leave_note({ 
      desc: desc, 
      title: title, 
      object_id: oid, 
     }, function() { 
      $scope.notes.push(note.$get());     
     } 
); 

하는 것으로 (즉,이 $get을 피하기)하지만 구현의 정확한 세부 사항을 알고하지 않기 때문에 그냥 일반적인 솔루션을 제공했습니다.

+0

응답 시간을내어 주셔서 감사합니다. 실제로'$ scope.notes.push (note)'를 사용하여 끝나고 데이터를 업데이트합니다. 건배! – Amyth

관련 문제