在某些情况下,扩展Angular资源会导致GET请求失败

时间:2013-08-13 06:03:48

标签: angularjs


   我们的资源定义如下:

var services = angular.module('services', ['ngResource']);  
services.factory('Facility', function ($resource) {
var resource = $resource('/facility/:id.json', {id: '@id'}, update);
    resource.restore = function (pathParams, success, error) {
        $resource('/facility/:id/restore.json', {}, update).update(pathParams, {}, success, error);
    };
    return resource;
});

其中update被定义为自定义操作,因为Angular默认情况下不支持PUT,如下所示:

var update = {update: {method: 'PUT'}};

现在,通过调用Facility.get触发的GET网址是http://localhost:9091/facilities/1.json,例如,它正常工作。但是我们正在使用Spring安全性,并且在会话超时并且随后重定向到登录和登录成功之后,我们执行了一个location.reload(),它重新加载了编辑页面,但是这个GET URL失败并且JSON解析错误“没有要映射的内容......输入结束“。我们发现重新定义了另一个服务工厂,如

services.factory('FacilityGet', function ($resource) {
     return $resource('facilities/:id', {}, {});
}

并使用它解决了这个问题。使用任何更新操作或“{id:'@ id'}”参数会导致问题 - 只有当我们排除它们时,相应的资源才会触发正确的GET请求。

请注意,从早期资源触发的GET仅在登录重定向后第一次失败,但稍后工作正常。任何帮助或指针都非常有用。

谢谢,
稻谷

0 个答案:

没有答案