在 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