我希望能够使用 $resource 使用 CORS 来请求我的数据来设置资源。我已经让 CORS 与 $http 一起工作,但同样的技术不适用于 $resource,我希望有人能来拯救我并告诉我如何使用 $resource。
我修改了Angular 教程的最后一步,通过在 services.js 文件中破解 phonecatServices 服务来使用 CORS。
我发现这个例子使用了 $http.defaults.useXDomain = true; 删除 $http.defaults.headers.common['X-Requested-With'];line 以获取角度以使用 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}
});
});
当我尝试发出请求时出现以下错误:对象 #<Resource> 没有方法 'push'
编辑
我已经尝试设置 $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
就像任何访问这个问题的人都知道,下面的答案都没有真正回答这个问题,我自己正在研究一个答案,但如果有人发现这个并有一个答案,我仍然会非常感激。
编辑:06/09/13
目前正在调查这个项目,似乎允许我正在寻找的一切:https ://github.com/jpillora/xdomain