2016-08-03 2 views
0

Im пытается реализовать ngInfiniteScroll - Loading Remote Data на моем приложении.Возврат JSONP с сервера NodeJS с AngularJS

Demo отлично работает & Я успешно получаю API Reddit, но не могу заставить свой список работать.

Я успешно удаляю 200 Ответ сервера & может видеть мои данные в инструменте dev. Эти ответы были некоторая помощь 1 & 2, но я все еще не совсем уверен, что делать.


EDIT (см угловую заводскую редактировать):

Этот обратный вызов теперь работает и $http будет успех, однако сейчас я получаю Cannot read property 'length' of undefined


Угловой завод:

Reddit.prototype.nextPage = function() { 
    if (this.busy) return; 
    this.busy = true; 

    // Edit - I changed this var from 
    // var url = config_api.API_ENDPOINT_LOCAL + "list?after=" + this.after + "?alt=json-in-script&jsonp=JSON_CALLBACK"; 
    // to 
    var url = config_api.API_ENDPOINT_LOCAL + "list?after=" + this.after + "?alt=json-in-script&callback=JSON_CALLBACK"; 

    $http.jsonp(url) 
    .success(function(data) { 
     console.log(data); 
     var items = data.children; 
     for (var i = 0; i < items.length; i++) { 
     this.items.push(items[i].data); 
     } 
     this.after = "t3_" + this.items[this.items.length - 1].id; 
     this.busy = false; 
    }.bind(this)); 
    console.log('Reddit.prototype'); 
}; 

NodeJS Маршрут:

app.get('/list', function (req, res) { 

    Found.find(function (err, post) { 
    if (err) { 
     res.send(err); 
    } 
    res.jsonp(post); 
    }); 

}); 
+0

элементы должны быть неопределенными, не видны '.length' где-нибудь еще? Попробуйте отбросить строку 'debugger', где у вас есть console.log, тогда вы можете проверить значение переменных во время работы. Ах, я думаю, что вижу это ... выведет ответ ... не вернусь к ответу, но элементы определенно не определены, когда вы делаете .length на нем иначе не было бы этой ошибки. – shaunhusain

+0

@shaunhusain, поэтому мои данные возвращаются как 'data = [Object, Object]' со всеми моими возвращаемыми vals с сервера – Mark

+0

Попробуйте интерактивный отладчик (F12 -> Sources Panel или просто запустите F12 и добавьте 'отладчик ; 'statement в коде), вы должны иметь возможность добавлять наблюдателей или проверять локальные переменные там, чтобы видеть, какие данные и какие данные. У них есть и проверять элементы, - массив, просто выполните код с F10 или небольшим стрелка, проходящая по кругу в инструментах отладки. – shaunhusain

ответ

2
Reddit.prototype.nextPage = function() { 
    if (this.busy) return; 
    this.busy = true; 

    // Edit - I changed this var from 
    // var url = config_api.API_ENDPOINT_LOCAL + "list?after=" + this.after + "?alt=json-in-script&jsonp=JSON_CALLBACK"; 
    // to 
    var url = config_api.API_ENDPOINT_LOCAL + "list?after=" + this.after + "?alt=json-in-script&callback=JSON_CALLBACK"; 

    $http.jsonp(url) 
    .success(function(data) { 
     console.log(data); 
     var items = data; 
     for (var i = 0; i < items.length; i++) { 
     this.items.push(items[i]); 
     } 
     this.after = "t3_" + this.items[this.items.length - 1].id; 
     this.busy = false; 
    }.bind(this)); 
    console.log('Reddit.prototype'); 
}; 

Если это исправить!

+0

100% сработало! Спасибо! – Mark

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