我正在尝试在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,但我需要首先使用它。
由于
答案 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}}