2013-09-03 9 views
9

मैं एक कोणीय $resource के भीतर interceptor का उपयोग कैसे करूं?

मेरे JSON संरचना:

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]); 
     } 
    } 
    }); 

मेरे सेवाओं, और क्या मैं 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 
       } 
    ); 
}); 

मैं $resource पढ़

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

मेरे नियंत्रक निम्नलिखित है , और ऐसा लगता है कि यह काम करना चाहिए, लेकिन ऐसा नहीं है, इसलिए मैं गलत समझ में हूं एनजी। कोई सुझाव?

उत्तर

6

आपकी सेवा अनुचित तरीके से बनाई गई है। घुमावदार ब्रेसिज़ और ब्रांड्स हैं जो गलत जगहों पर हैं। मैं मिल सकता है

यहाँ सही संस्करण (थोड़ा संशोधित है ताकि इसे चलाने के लिए: 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

मैं सेवा के अपने संस्करण और के बीच अंतर नहीं दिख रहा है मूल – deitch

+1

आपका जावास्क्रिप्ट था? अनुचित रूप से गठित किया गया है, यही कारण है कि आपका इंटरसेप्टर काम नहीं कर रहा था। ध्यान दें कि आपको घुंघराले ब्रेसिज़ नहीं लेना चाहिए और संपत्ति असाइनमेंट अपडेट करना चाहिए। –

+2

आह, अब मैं इसे देखता हूं। फिर भी शास्त्रीय मनोविज्ञान की घटना का एक और उदाहरण यह देखने के लिए कि क्या उम्मीद है देखने के लिए! :-) – deitch

संबंधित मुद्दे