【发布时间】:2013-05-09 09:19:45
【问题描述】:
我希望能够使用 $resource 使用 CORS 来请求我的数据来设置资源。我已经让 CORS 与 $http 一起工作,但相同的技术不适用于 $resource,我希望有人能来拯救我并告诉我如何使用 $resource。
我已经修改了last step of the Angular tutorial 以通过在 services.js 文件中破解 phonecatServices 服务来使用 CORS。
我发现this example 使用 $http.defaults.useXDomain = true;删除 $http.defaults.headers.common['X-Requested-With']; 行以获取角度以使用 CORS 请求数据,但如果我尝试 $resource.defaults.useXDomain = true;我收到错误:“无法设置未定义的属性‘useXDomain’”。
我认为 $resource 没有这个属性,所以我的问题是,如何配置 $resource 以使用 CORS 进行跨域资源请求。
这是我的代码:
angular.module('phonecatServices', ['ngResource']).
factory('Phone', function($resource){
return $resource('http\\://localhost\\:8080/:phoneId.json', {}, {
query: {params:{phoneId:'phones'}, isArray:true}
});
});
我在尝试发出请求时收到以下错误:Object #
编辑
我已经尝试设置 $http 并且它大部分时间都可以工作,但是当调用资源查询时,在本例中为 Phone.get(phoneId);这似乎引发了上述错误。
我怀疑导致错误的调用代码(来自 controllers.js step 11 angular tutorial):
function PhoneDetailCtrl($scope, $routeParams, Phone) {
$scope.phone = Phone.get({phoneId: $routeParams.phoneId}, function(phone) {
$scope.mainImageUrl = phone.images[0];
});
$scope.setImage = function(imageUrl) {
$scope.mainImageUrl = imageUrl;
}
}
如果我删除上述方法的内部代码,代码运行良好(没有获取网站的图像),但我不明白为什么这不起作用?我已将 $http 服务设置为使用 CORS,因此显然应该将其传递给 $resource。
任何人都可以对此有所了解吗? (任何工作示例代码将不胜感激)。
编辑:13/08/13
所以任何访问这个问题的人都知道,下面的答案都没有真正回答这个问题,我自己正在研究一个答案,但如果有人发现这个并有答案,我仍然会非常感激。
编辑:2013 年 6 月 9 日
目前正在研究这个项目,似乎允许我正在寻找的一切:https://github.com/jpillora/xdomain
【问题讨论】:
-
您是否尝试过改用服务?
-
Edgar 能给我举个例子吗?
标签: angularjs jsonp cors angular-resource angularjs-resource