2016-08-03 17 views
0

私のアプリにngInfiniteScroll - Loading Remote Dataを実装しようとしています。AngularJSを持つNodeJSサーバーからJSONPを返します

デモが正常に動作します& Reddit APIを正常に取得できましたが、私のリストが機能しなくなりました。

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'は表示されません。 console.logがあるところで 'debugger'行を削除して、実行中に変数の値を調べることができます。ああ、私はそれを見ていると思う...答えを投稿する...いいえ答えについて取り戻すことはできませんが、そうでなければそのエラーはないでしょう。 – shaunhusain

+0

@shaunhusainだから、私のデータは返されたすべての値をサーバから 'data = [Object、Object]'として戻ってくる。 – Mark

+0

インタラクティブなデバッガを試してみよう(F12 - > Sourcesパネル、またはF12を開いて 'デバッガ; 'のステートメント)、あなたはウォッチャーを追加するか、そこにあるローカル変数をチェックアウトして、どのデータが何で、どのデータがあるかを確認し、項目が配列であることを確認することができます。デバッグツールの矢印を矢印の上に移動します。 – 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

関連する問題