2016-05-21 4 views
1

Так что я пытаюсь сделать загрузку большей функцией. Я извлекаю данные из API twitch, и он приходит как массив объектов.AngularJS Загрузите дополнительную функцию

$scope.loadData = function() { 

$http.get("https://api.twitch.tv/kraken/streams?limit=9&offset=" + $scope.x).then(function(response) { 
    $scope.myName = response.data.streams; 
    $scope.link="http://player.twitch.tv/?channel="; 
    return $scope.x=$scope.x + 9; }); }; 
    //initial load 
    $scope.loadData(); 

$ scope.myName - это массив, в котором хранятся данные, и используется в ng-repeat.
$ scope.x переменная, используемая для смещения, и после нажатия кнопки она увеличивается и используется для извлечения новых потоков. Поэтому, когда я нажимаю кнопку, она удаляет старые 9 потоков и загружает новые 9 потоков. Я хочу сохранить свои старые 9 потоков и просто добавить еще 9 нажатий кнопки «каждый раз». См. Здесь: https://plnkr.co/edit/TbOf9hkPILJn2snW8D7A Спасибо.

+1

Почему вы загружаете 3 разных угловых версии? Особенно зачем загружать угловые-2, когда ваш код установлен для углового-1? – charlietfl

+0

Это просто для plnkr, потому что иногда это не работает, поэтому я загружаю все, просто быть уверенным. – prp101

+0

Это не имеет никакого смысла и чуть более усложняет демо – charlietfl

ответ

0

Если я правильно понял проблему, вы должны просто добавить свой массив данных вместо того, чтобы заменить его:

$scope.myName = []; 
$scope.loadData = function() { 

$http.get("https://api.twitch.tv/kraken/streams?limit=9&offset=" + $scope.x).then(function(response) { 
    // add streams to existing array 
    Array.prototype.push.apply($scope.myName, response.data.streams); 

    $scope.link="http://player.twitch.tv/?channel="; 
    return $scope.x=$scope.x + 9; }); }; 
    //initial load 
    $scope.loadData(); 
+2

проще использовать что-то вроде 'Array.push.apply()' – charlietfl

+0

Хорошо, я обновил свой ответ. – PJDev

+0

Yeeees, это все, спасибо вам обоим очень :) Я знал, что мне нужно добавить, просто не смог найти правильный синтаксис. Благодарю. :) – prp101

0

HERE IS THE SOLUTION OF PLNKR

Я модифицированный контроллер Streamovi и добавили нагрузку более кнопки в нижней части, так что вы может запускать загрузку более

app.controller('Streamovi', function($scope, $http) { 

    var ITEMS_PER_LOAD = 9; 
    var offset = 0; 
    $scope.myName = []; 

    function loadStreams(){ 
    $http.get("https://api.twitch.tv/kraken/streams?limit="+ITEMS_PER_LOAD+'&offset='+offset).then(function(response) { 
     $scope.myName = $scope.myName.concat(response.data.streams); 
     $scope.link="http://player.twitch.tv/?channel="; 
     offset+=ITEMS_PER_LOAD; 
    }); 
    } 

    //handler for the "Load More" button in the view. 
    $scope.loadMore = function(){ 
    loadStreams(); 
    } 

    //initial Loading 
    loadStreams(); 
}); 
+0

Спасибо :) Работает как шарм. – prp101

Смежные вопросы