我定义了一个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请求返回了带有正确的Location标头的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)
创建服务时我犯了一个错误。我忘了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;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句