0

我想创建一个简单的应用程序,它使用 Sencha Touch 2 和 RSS 源向我显示我最喜欢的新闻网站的最新故事列表。

如何从 rss-feed 获取数据,然后将其显示为列表,显示标题、作者、日期和内容?

我可以获得最新新闻报道的列表,但我只能设法显示每个项目的标题/标题,而不是作者、日期、片段等。这是我的代码:

1 个模型,1 个商店,1 个视图,1 个 app.js:

//The store
Ext.define("NewsApp.store.EbStore", {
extend: "Ext.data.Store",
requires: ["Ext.data.proxy.JsonP", "Ext.dataview.List" ],
config: {
    model: "NewsApp.model.NewsListModel",
    autoLoad: true,
    proxy: {
        type: 'jsonp',
        url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=5&q=http://feeds.feedburner.com/newsapp_pol',
        reader: {
            type: 'json',
            rootProperty: 'responseData.feed.entries'
            }
        }
    }    
});


//The Model
Ext.define("NewsApp.model.NewsListModel", {
extend: "Ext.data.Model",
config: {
    fields: [
    {name: 'title', type: 'auto'},
    {name: 'author', type: 'auto'},
  ]
} 
});

//The view
Ext.define("NewsApp.view.NewsList", {
extend: "Ext.Container",
requires: "Ext.Toolbar",
alias: "widget.newslistview",

config: {
    layout: {
        type: 'fit'
    },

    items: [{
        xtype: "toolbar",
        title: "Danske Nyheder",
        docked: "top",
        items: [
                {
                    xtype: 'spacer'
                },
                {
                    xtype: "button",
                    text: "Indstillinger",
                    ui: "action",
                    id: "settingsButton",
                    iconMask: true,
                    iconCls: 'settings'
                },
                  {
                    xtype: "button",
                    text: "Refresh",
                    ui: "action",
                    id: "refreshButton",
                    iconMask: true,
                    iconCls: 'refresh'
                  }
                ]
    },
    {
        xtype: "list",
        store: "EbStore",
        itemId:"EbList",
        onItemDisclosure: true,
        itemTpl: '{title}'
    }
    ],
    }
});

// And the app.js just for kicks
Ext.application({
name: "NewsApp",
models: ["NewsListModel"],
stores: ["EbStore"],
views: ["NewsList"],

launch: function () {
    console.log("App starts");
    var newsListView = {
        xtype: "newslistview"
    };

    Ext.Viewport.add([newsListView]);
}
});

使用此代码,我可以很好地显示 rss 项目的标题。但是如果我将 {title} 更改为 {author},列表项会在我的视图中创建,但没有任何内容。我想阅读的 RSS 使用的是普通标准:http: //feeds.feedburner.com/newsapp_pol


那么,我如何不仅显示标题并访问 rss 的其余部分?
我想这归结为我不了解代理代码中正在捕获哪些数据,或者究竟是如何或以什么格式捕获的。

有人可以帮忙吗?:-)

我已经查看了这两个 Sencha Touch RSS 阅读器的示例,两者都非常出色,只是代码太高级了,我无法理解:
http ://www.sencha.com/apps/rssreader/
https://github .com/AndreaCammarata/FeedBurner-RSS-Reader

4

1 回答 1

1

巨魔,

如果你想看看你的google feed的数据响应,我建议你用json美化器看一下json数据,这样更容易阅读。首先将您的google feed url粘贴到浏览器的地址栏中。复制生成的 json 响应 - 并将其粘贴到美化器中。这将为您提供响应数据中数据字段的结构化视图。

当我尝试它时,第一个条目看起来像这样:

                "title": "Over 50 såret under kampe i Kosovo",
                "link": "http://politiken.dk/udland/ECE1672568/over-50-saaret-under-kampe-i-kosovo/",
                "author": "",
                "publishedDate": "Thu, 28 Jun 2012 12:09:18 -0700",
                "contentSnippet": "35 politifolk og 20 serbere blev såret, da en gruppe serbere stødte sammen i det etnisk delte Kosovo.",
                "content": "35 politifolk og 20 serbere blev såret, da en gruppe serbere stødte sammen i det etnisk delte Kosovo.",
                "categories": []

我注意到所有条目的“作者”字段都是空的,这可以解释为什么你得到一个空列表。

这应该可以帮助您了解提要中的数据结构并在您的代码中创建匹配的引用。

干杯,拉斯穆斯

于 2012-06-28T22:39:15.477 回答