2014-12-27 51 views
0

我定义了一个Restangular服务:链接后即可通过Restangular

var dashboards = angular.module('models.dashboards', ['restangular']); 

dashboards.factory('Dashboards', function(Restangular) { 
    var Dashboards = Restangular.service('dashboards'); 
    Restangular.extendModel('dashboards', function (model) { 
     //model.newMethod = function() { 
     //} 
    }); 
    return Dashboards; 
}); 

在一个决心,我想打电话给一个POST,然后从POST响应Location头中返回的URL一个GET 。 POST不需要任何参数。

resolve: { 
    'drafts': ['Dashboards', function (Dashboards) { 
     return Dashboards.post().then(function(result) { 
      return Dashboards.oneUrl('newDash', result.data).get(); 
     }); 
    }] 
}, 

我配置了一个响应提取器,将位置标头设置为POST请求的响应数据。

RestangularProvider.setFullResponse(true); 

RestangularProvider.setResponseExtractor(function(data, operation, route, url, response, deferred) { 
    var returnData = data; 

    if(operation === 'post') { 
     console.log(response.headers()); 
     returnData = response.headers().location; 
    } 

    return returnData; 
}); 

我可以看到POST请求,它返回201和正确的位置标题。但我没有看到GET请求。相反,我得到这个异常:

TypeError: Cannot set property 'singleOne' of undefined 
    at $get.okCallback (restangular.js:1145) 
    at processQueue (ionic.bundle.js:20962) 
    at ionic.bundle.js:20978 
    at Scope.$get.Scope.$eval (ionic.bundle.js:22178) 
    at Scope.$get.Scope.$digest (ionic.bundle.js:21994) 
    at Scope.$get.Scope.$apply (ionic.bundle.js:22282) 
    at done (ionic.bundle.js:17439) 
    at completeRequest (ionic.bundle.js:17629) 
    at XMLHttpRequest.requestLoaded (ionic.bundle.js:17570) 

回答

0

我创建服务时犯了一个错误。我忘记在扩展它时返回model对象:

var dashboards = angular.module('models.dashboards', ['restangular']); 

dashboards.factory('Dashboards', function(Restangular) { 
    var Dashboards = Restangular.service('dashboards'); 
    Restangular.extendModel('dashboards', function (model) { 
     //model.newMethod = function() { 
     //} 
     return model; 
    }); 
    return Dashboards; 
});