简体   繁体   English

我怎样才能使角度递归

[英]how can i make recursive in angular

I made a small program that supposed to make fetch data through an API sequentially based on a given array length. 我制作了一个小程序,该程序应该根据给定的数组长度通过API依次获取数据。 I have a button which iterates through the array when clicked. 我有一个按钮,单击该按钮可遍历数组。

Here is the Angular controller: 这是Angular控制器:

 angular.module('LoadingBarExample', ['chieffancypants.loadingBar',
     'ngAnimate'
 ])
 .config(function(cfpLoadingBarProvider) {
     cfpLoadingBarProvider.includeSpinner = true;
 })
 .controller('ExampleCtrl', function($scope, $http, $timeout, cfpLoadingBar) {
         $scope.posts = [];
         $scope.test = 0;
         $scope.section = null;
         $scope.subreddit = null;
         $scope.subreddits = ['cats', 'pics', 'funny', 'gaming', 'AdviceAnimals',
             'aww'
         ];
         var getRandomSubreddit = function() {
             // var sub = $scope.subreddits[Math.floor(Math.random() * $scope.subreddits.length)];
             if ($scope.test > $scope.subreddits.length - 1) {
                 $scope.test = 0
             }
             var sub = $scope.subreddits[$scope.test];
             // console.log($scope.subreddits[$scope.test])

             $scope.test++;



             // ensure we get a new subreddit each time.
             if (sub == $scope.subreddit) {
                 return getRandomSubreddit();
             }

             return sub;
         };

         $scope.fetch = function() {

             $scope.subreddit = getRandomSubreddit();
             $http.jsonp('http://www.reddit.com/r/' + $scope.subreddit + '.json?limit=50&jsonp=JSON_CALLBACK').success(function(data) {
                 $scope.posts = data.data.children;
             });

         };

and this is the HTML: 这是HTML:

<a href="#" class="btn btn-primary btn-lg" ng-click="fetch()"><i class="glyphicon glyphicon-play-circle"></i> Start Service <span> (User Arrive)</span></a>
</div>
</div>

<h4 class="loading-text" ng-show="subreddit">Showing 100 results for: <span>/r/{{subreddit}}...</span></h4>
<div ng-repeat="post in posts" class="panel panel-default">
    <div class="panel-body media">
        <span class="badge pull-right">{{post.data.score}}</span>
        <div class="pull-left" ng-if="post.data.thumbnail">
            <img class="thumbnail" ng-src="{{post.data.thumbnail}}">
        </div>
        <div class="">
            <div class="">
                <a href="{{post.data.url}}">{{post.data.title}}</a>
                <p class="meta">by {{post.data.author}}</p>
                <p class="meta-comments">{{post.data.num_comments}} comments</p>
            </div>
        </div>
    </div>
</div>

I want to press the button once and the fetch should continue to display until the array length 我想按一下按钮,提取应该继续显示直到数组长度

Thanks 谢谢

You are replacing your posts data every time you make you call. 每次打电话时,您都将替换自己的帖子数据。

Replace $scope.posts = data.data.children; 替换$scope.posts = data.data.children; with $scope.posts = $scope.posts.concat(data.data.children); 其中$scope.posts = $scope.posts.concat(data.data.children); to append posts rather than replace. 追加帖子而不是替换。

If you want your fetch function to run as many times as you have subreddits in your $scope.subreddits array then you can change fetch() to the following: 如果您希望fetch函数的运行次数与$scope.subreddits数组中的subreddits一样多,则可以将fetch()更改为以下内容:

$scope.fetch = function() {
for (i = 0; i < $scope.subreddits.length; i++) {
    $scope.subreddit = getRandomSubreddit();
    $http.jsonp('http://www.reddit.com/r/' + $scope.subreddit + '.json?limit=50&jsonp=JSON_CALLBACK').success(function (data) {
        $scope.posts = $scope.posts.concat(data.data.children);
    });
}};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM