2014-10-17 2 views
1

저는 angle의 $ 리소스를 가진 일반적인 편안한 리소스를 가지고 있습니다. 모든 저장 메소드에서, 내가 속한 범위에서 메시지와 부울을 설정하고 해당 메시지의 시간 초과를 설정하려고합니다. 그래서 내 코드에서 어디서 .save /.$ save라고 부르는 곳에서 나는 (.) 아래에 .finally를 붙인다.

내가 호출하는 모든 저장에 동일한 .finally를 넣는 대신, 실제로 실제 자원 자체에 마침내 쓸 수 있는지, 궁극적으로 내 저장 기능의 제네릭이 될지 궁금하다.

.finally(function() { 
     $scope.loading = false; 
     $timeout(function() { 
     $scope.message = false; 
     }, 2500); 
    }); 

var resource = $resource(
    pageListPath, 
    {}, 
    { 
    query: {method:'GET', isArray:true}, 
    get: {method:'GET', url: pageDetailPath, params:{id:'@id'}, cache:true}, 
    save: {method:'PUT', url: pageSavePath, params:{id:'@id'}}, 
    delete: {method:'DELETE', url: pageDetailPath, params:{id:'@id'}} 
    } 
); 

return resource; 


이상적으로 뭔가

같은
save: { 
    method:'PUT', 
    url:pageSavePath, 
    params:{id:'@id'}, 
    finally:function() { doStuff() }} 

는 내가 무엇을 찾고있다. 이것이 가능한가?

답변

1

특정 응답에 일반적인 기능을 제공하기 위해이 서비스를 캡슐화하는 다른 서비스를 작성했습니다.

이 API 서비스 :

pageServices.factory('PageAPI', 
    ['$resource', 
    function($resource, 
    var resource = $resource(
     pageListPath, 
     {}, 
     { 
     query: { 
      method:'GET', 
      isArray:true 
     }, 
     get: { 
      method:'GET', 
      url: pageDetailPath, 
      params:{ id:'@id' } 
     }, 
     ..., 
     ..., 
    } 
    ); 

    return resource; 

    }] 
); 

pageServices.factory('Page', ['PageAPI', 
    function(PageAPI) { 
    var service = { 
     'getPages': function() { 
     return PageAPI.query(function(response) { 
      // Do stuff with success 
     }, function(err) { 
      // Handle error 
     }).$promise.finally(function() { 
      // Generic finally handler 
     } 
     }, 
     ..., 
     ..., 
    } 
    return service 
    } 
])