2013-09-03 4 views
9

Comment utiliser un interceptor dans un angle $resource?

Ma structure JSON:

var dgs = [{id :1, 
      driver:'Sam', 
      type: 'bus', 
      segments:[{id:1,origin:'the bakery',arrival:'the store'}, 
         {id:2,origin:'the store' ,arrival:'somewhere'}] 
      }, 
      { ... }, 
      { ... } 
      ]; 

Mon contrôleur est le suivant:

function dgCtrl($scope,$http,DriveGroup,Segment) { 
    $scope.dgs = DriveGroup.query(function() 
    // Code below may belong in a response interceptor? 
    for (var i=0;i<$scope.dgs.length;i++) { 
     var segments = $scope.dgs[i].segments; 
     for (var j=0;j<segments.length;j++) { 
     segments[j] = new Segment(segments[j]); 
     } 
    } 
    }); 

Mes services, et ce que j'ai essayé d'utiliser l'objet interceptor:

angular.module('dgService',['ngResource']). 
    factory("DriveGroup",function($resource) { 
    return $resource(
     '/path/dgs', 
     {}, 
     {update:{method:'PUT'}) 
     {fetch :{method:'GET', 
       // This is what I tried. 
       interceptor:{ 
       response:function(data) { 
        console.log('response',data); 
       }, 
       responseError:function(data) { 
        console.log('error',data); 
       } 
       }, 
       isArray:true 
       } 
    ); 
}); 

Je lis $resource , et il semble que cela devrait fonctionner, mais ce n'est pas le cas, alors je suis mal compris ng Aucune suggestion?

Répondre

6

Votre service est mal formé. Il y a des accolades et des parenthèses dans les mauvais endroits.

est ici la version correcte (légèrement modifié pour que je puisse le faire fonctionner: http://jsfiddle.net/roadprophet/VwS2t/

angular.module('dgService', ['ngResource']). 
factory("DriveGroup", function ($resource) { 
    return $resource(
     '/', {}, { 
     update: { 
      method: 'PUT' 
     }, 
     fetch: { 
      method: 'GET', 
      // This is what I tried. 
      interceptor: { 
       response: function (data) { 
        console.log('response in interceptor', data); 
       }, 
       responseError: function (data) { 
        console.log('error in interceptor', data); 
       } 
      }, 
      isArray: false 
     } 
    } 

    ); 
}); 
+0

Je ne vois pas la différence entre votre version du service et l'original – deitch

+1

Votre JavaScript était? –

+2

Ah, maintenant je le vois, encore un autre exemple du phénomène de la psychologie classique de voir ce que l'on attend de lui. pour voir! :-) – deitch