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": []
Я заметил, что поле "автор" пусто во всех записях, что может объяснить, почему вы получаете пустой список.
Это должно помочь вам понять структуру данных в ленте и создать соответствующие ссылки в вашем коде.
Ура, Расмус