在 AngularJS 中使用 $resource 将域名作为参数传递
Passing Domain Name as parameter with $resource in AngularJS
我想将域名作为 $resource 请求的参数传递。我试过了,但没用。我不明白为什么。任何线索?
它输出 http://:url/ 而不是我要传递的变量。
编辑:如果我这样做,变量 :url 通过:
http://adomain.com/:url
这是我的代码:
我的工厂:
angular.module('myApp')
.factory('LoadingContent', function LoadingContentFactory($resource) {
return $resource('http://:url/wp-json/posts/?type[]=:type&filter[posts_per_page]=50&filter[order]=DESC', {type: '@type',url: '@url'}, {'get': {method: 'GET', isArray: true, params: {type: '@type',url: '@url'} }});
});
我的函数:
LoadingContent.get({
url : $scope.selectedCompany.URL,
type : $scope.selectedCompany.type,
})
.$promise.then(
function(data){
$scope.articles = data;
openInfoModals.closeModal();
}
);
问题已解决:问题来自angular-resource#1.4.5版本。我回到了 1.4.3 版本并且它可以工作。
如果有人有解决方案使其适用于 1.4.5,欢迎他。
我认为您的代码没有任何问题。
我已经创建了一个 plunker
来复制您的代码并且它工作正常。
这是它的link:http://plnkr.co/edit/RsI3TgKwcjGEXcTMKoQR?p=preview
真正的问题源于在 ngResource 中添加对 IPv6 URL 的支持(参见 https://github.com/angular/angular.js/issues/12512)。如果你看一下提交,他们在进行参数替换时实际上忽略了 domain/hostname 。如前所述,降级到 1.4.3 可以解决这个问题。幸运的是,这似乎是 1.4.3 和 1.5.5 之间的唯一变化,因此降级并不是什么大问题。
为了完整起见,我还在 angular 项目中创建了这个问题来跟踪它的永久修复:https://github.com/angular/angular.js/issues/14542。
我想将域名作为 $resource 请求的参数传递。我试过了,但没用。我不明白为什么。任何线索? 它输出 http://:url/ 而不是我要传递的变量。
编辑:如果我这样做,变量 :url 通过: http://adomain.com/:url
这是我的代码:
我的工厂:
angular.module('myApp')
.factory('LoadingContent', function LoadingContentFactory($resource) {
return $resource('http://:url/wp-json/posts/?type[]=:type&filter[posts_per_page]=50&filter[order]=DESC', {type: '@type',url: '@url'}, {'get': {method: 'GET', isArray: true, params: {type: '@type',url: '@url'} }});
});
我的函数:
LoadingContent.get({
url : $scope.selectedCompany.URL,
type : $scope.selectedCompany.type,
})
.$promise.then(
function(data){
$scope.articles = data;
openInfoModals.closeModal();
}
);
问题已解决:问题来自angular-resource#1.4.5版本。我回到了 1.4.3 版本并且它可以工作。
如果有人有解决方案使其适用于 1.4.5,欢迎他。
我认为您的代码没有任何问题。
我已经创建了一个 plunker
来复制您的代码并且它工作正常。
这是它的link:http://plnkr.co/edit/RsI3TgKwcjGEXcTMKoQR?p=preview
真正的问题源于在 ngResource 中添加对 IPv6 URL 的支持(参见 https://github.com/angular/angular.js/issues/12512)。如果你看一下提交,他们在进行参数替换时实际上忽略了 domain/hostname 。如前所述,降级到 1.4.3 可以解决这个问题。幸运的是,这似乎是 1.4.3 和 1.5.5 之间的唯一变化,因此降级并不是什么大问题。
为了完整起见,我还在 angular 项目中创建了这个问题来跟踪它的永久修复:https://github.com/angular/angular.js/issues/14542。