-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

  • 可能您唯一做得很好的就是设置了网址,但仅此而已。

您需要检查返回的 JSON 的样子。检查 API 参考以了解atom 提要的结构。这是在 XML 中,但相应的 JSON 响应将具有几乎相同的格式,但存在一些细微差别。通过将对象写入控制台来检查对象,以验证您获得了正确的属性。

一旦你理解了这一点,你就需要使用正确的查询来获得你所期望的。查看他们关于查询参数的 API 参考。

为了帮助简化您的淘汰代码,我强烈建议您获取返回的响应并将其映射到具有简化属性名称的对象。例如,要获取条目的缩略图,您必须访问media$group.media$thumbnail数组。如果你可以通过它访问它会更容易thumbnail

此外,如果您要绑定的元素需要绑定多个值,那么以使您的绑定更容易的方式映射这些值会有所帮助。例如,在使用attr绑定时,您将为要添加的每个属性设置一个属性。相反,您可以将对象中的所有属性分组并绑定到该对象。

我写了一个小提琴,应用我上面所说的一切来做你所要求的。这应该有助于您了解您可以做什么以及如何去做。

演示

于 2012-11-12T08:35:01.827 回答