-1

これは可能ですか..これが私が持っているATMですが、私のデータオブジェクトは専門用語の負荷を返しているだけです、私は何を間違っていますか?私は何かをしているのですか..そうです、そのことについては?

基本的に、ユーザーの動画のリストを印刷したい(サムネイルとタイトル、それぞれを動画自体へのクリック可能なリンクにする)

ありがとう!

$(document).ready(function(){
    $player.init();

})

var $player = (function(){

    var player = {};

    player.init = function(){


    //init Youtube knockout
        player.initYoutubeKnockout();

    }
    player.knockoutModel = {
        videoData : ko.observableArray([]),

    }
    player.initYoutubeKnockout = function()
    {

        //load the Youtube json feed
        $.ajax({
            url: 'http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?v=2&alt=json',
            type: 'GET',
            dataType: 'jsonp',
            data: {
                count: 5
            },
            success: function(data, textStatus, xhr) {
                player.doYoutubeKnockout(data.item);            
            }
        });   
    }
    player.doYoutubeKnockout = function( data )
    {

        player.knockoutModel.videoData(data);

        ko.applyBindings(player.knockoutModel, $('#youtube-feed')[0]);
        console.log($(this));
    }       


    return player;

})();
4

1 に答える 1

1

率直に言って、あなたはほとんど何もしていませんでした。

  • YouTubeから返されるJSONデータは、からではなくdata.item、完全に異なる構造になっています。

  • ユーザーから5つのアップロードを取得したいと想定しています。パラメータ名はmax-results、ではなく、になりますcount

  • おそらくあなたがうまくやったのはURLを設定することだけでしたが、それだけです。

返されるJSONがどのように見えるかを調べる必要があります。アトムフィードの構造については、APIリファレンスを確認してください。これはXMLですが、対応するJSON応答の形式はほぼ同じですが、若干の違いがあります。オブジェクトをコンソールに書き込んで調べ、適切なプロパティを取得していることを確認します。

それを理解したら、正しいクエリを使用して、期待するものを取得する必要があります。クエリパラメータのAPIリファレンスを確認してください。

ノックアウトコードを単純化するために、返される応答を取得して、単純化されたプロパティ名を持つオブジェクトにマップすることを強くお勧めします。たとえば、エントリのサムネイルを取得するには、media$group.media$thumbnail配列にアクセスする必要があります。を介してアクセスできれば、より簡単になりますthumbnail

また、バインドする要素で複数の値をバインドする必要がある場合は、バインドが簡単になるように値をマップすると便利です。たとえば、attrバインディングを使用する場合は、追加する属性ごとにプロパティを設定します。代わりに、オブジェクト内のすべてのプロパティをグループ化して、それにバインドすることができます。

私はあなたが求めていたように私が上で言ったことをすべて適用するフィドルを書きました。これは、あなたが何ができるか、そしてそれをどのように行うかについての考えをあなたに与えるのに役立つはずです。

デモ

于 2012-11-12T08:35:01.827 に答える