使用AngularJS中的$ resource将域名作为参数传递

时间:2015-09-08 17:14:25

标签: angularjs angular-resource

我想通过$ 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,欢迎他。

2 个答案:

答案 0 :(得分:1)

真正的问题源于在ngResource中添加对IPv6 URL的支持(请参阅https://github.com/angular/angular.js/issues/12512)。如果您查看提交,他们在进行参数替换时实际上忽略了域/主机名。如上所述,降级到1.4.3解决了这个问题。幸运的是,这似乎是1.4.3和1.5.5之间的唯一变化,所以降级并不是一个太大的问题。

为了完整起见,我还在角度项目中创建了此问题,以跟踪对其的永久修复:https://github.com/angular/angular.js/issues/14542

答案 1 :(得分:0)

我认为您的代码中没有任何问题。

我创建了一个plunker复制代码并且工作正常。

以下是其链接:http://plnkr.co/edit/RsI3TgKwcjGEXcTMKoQR?p=preview