从Angular JS中的URL列表递归返回JSON对象

时间:2016-07-29 09:19:09

标签: javascript html angularjs json

我正在尝试在AngularJS应用程序中返回一个JSON对象。 我有一个链接列表,我必须逐个传递它们,将它们附加到iniatal链接,然后抓取json文件并显示它。

到目前为止,即使尝试使用一个链接也不会显示任何结果。

这是我的控制者:

(function () {
    'use strict';
    angular.module('index')
        .filter('resolve', function () {
                return function (x, $http) {
                    $http.get('http://FirstPartOfTheUrl.com' + x)
                        .success(function (data) {
                            return data;
                        })
                        .error(function () {
                            return 'Error Message';
                        });
                }
            }
        })
.controller('indexController', function ($scope, $http) {
    $scope.test = 'https://theUrlIHaveToAppend.com'
})();

这是我的HTML

<div ng-controller="indexController">
    {{test | resolve}}
</div>

显示页面只返回 {{test |决心}}

请记住,如果我尝试只打印附加的网址,它会显示正确的网址,如果我点击它,我实际上可以获取该文件。 我尝试了AJAX和异步函数,但问题仍然存在。

至于递归,我将在div中应用ng-repeat,但我需要首先使用它。

由于

1 个答案:

答案 0 :(得分:0)

首先从回调中返回毫无意义

$http
   .get('http://FirstPartOfTheUrl.com'+x)
   .success(function(data) {
       return data; // this makes no sense.
   });

然后你的问题实际上比那更困难。因为您需要破解角度filter基础结构,以使其与异步代码一起使用。

在控制器

中更容易解决
controller('indexController', function ($scope, $http) {
   $http
       .get(url)
       .then(function(data){
          $scope.test = data
       });
})

但是如果您真的需要将此解析功能作为过滤器实现,我建议您使用此程序包中的asyncFilter https://github.com/cvuorinen/angular1-async-filter 代码太复杂,无法在此处重现。但一般的想法是使用$stateful过滤器重新计算每个循环。

让您的resolve过滤器返回承诺

.filter('resolve', function($http) {
    return function(x) {
        return $http
           .get('http://FirstPartOfTheUrl.com'+x);
   }
})

并将其传递给async过滤器。

{{test | resolve | async}}