Sencha Touch 2: Как отобразить RSS-канал в виде списка?

Я хотел бы создать простое приложение, которое показывает мне список последних историй с моих любимых новостных сайтов, используя Sencha Touch 2 и RSS-каналы, конечно.

Как получить данные из RSS-ленты, а затем отобразить их в виде списка с указанием названия, автора, даты и содержания?

Я могу получить список последних новостей, но мне удается только отобразить заголовок / заголовок каждого элемента, а не автора, дату, фрагмент и т. Д. Вот мой код:

1 модель, 1 магазин, 1 вид, 1 приложение.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?
Я предполагаю, что это сводится к тому, что я не понимаю, какие данные собираются в прокси-коде или как или в каком формате.

Кто-нибудь может помочь?:-)

Я проверил эти два примера читателей RSS Sencha Touch, и оба они превосходны, за исключением того, что код слишком сложен, чтобы я мог понять:
http://www.sencha.com/apps/rssreader/
https://github.com/AndreaCammarata/FeedBurner-RSS-Reader

1 ответ

Решение

Troels,

Если вы хотите посмотреть ответ на данные вашего фида Google, я предлагаю вам взглянуть на данные json с помощью json beautifier, чтобы его было легче читать. Сначала вставьте свой URL -адрес канала Google в адресную строку браузера. Скопируйте полученный ответ JSON - и вставьте его в beautifier. Это даст вам структурированное представление полей данных в данных ответа.

Когда я попробовал, первая запись выглядела так:

                "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": []

Я заметил, что поле "автор" пусто во всех записях, что может объяснить, почему вы получаете пустой список.

Это должно помочь вам понять структуру данных в ленте и создать соответствующие ссылки в вашем коде.

Ура, Расмус

Другие вопросы по тегам