как я могу сделать рекурсивный в угловой

Я сделал небольшую программу, которая должна делать выборку данных через API последовательно на основе заданной длины массива. У меня есть кнопка, которая итерации через массив при нажатии.

Вот угловой контроллер:

 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;
             });

         };

и это 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>

Я хочу нажать кнопку один раз, и выборка должна продолжать отображаться до тех пор, пока длина массива

благодаря

javascript,jquery,arrays,angularjs,recursion,

0

Ответов: 1


0

Вы заменяете свои данные сообщений каждый раз, когда звоните.

Заменить $scope.posts = data.data.children; с $scope.posts = $scope.posts.concat(data.data.children);добавлять сообщения , а не заменить.

Если вы хотите, чтобы ваша функция fetch выполнялась столько раз, сколько у вас есть субредады в вашем $scope.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);
    });
}};
JavaScript, JQuery, массивы, angularjs, рекурсия,
Похожие вопросы