我正在尝试使用sencha touch和phonegap设置原生样式的应用程序。我正在尝试将外部XML Feed中的数据导入到模型中。
在我的模型(Event.js)中,我有:
Ext.regModel('Event', {
fields: [
{name: 'title', type: 'string'}
]
});
在我的商店(eventsstore.js):
ToolbarDemo.eventstore = new Ext.data.Store({
model: 'Event',
sorters: 'title',
getGroupString : function(record) {
return record.get('title')[0];
},
proxy: {
type: 'ajax',
url: 'http://the-url-to-the-file.xml',
reader: {
type: 'xml',
root: 'events',
record: 'event'
}
},
autoLoad: true
});
在视图(尝试列表):
ToolbarDemo.views.Eventscard = Ext.extend(Ext.List, {
title: "Events",
iconCls: "search",
store: ToolbarDemo.eventstore,
itemTpl: '{title}',
grouped: true,
indexBar: true,
cardSwitchAnimation: 'slide'
});
Ext.reg('eventscard', ToolbarDemo.views.Eventscard);
尝试作为面板:
ToolbarDemo.views.Eventscard = Ext.extend(Ext.Panel, {
title: "Events",
iconCls: "search",
dockedItems: [{
xtype: 'toolbar',
title: 'Events'
}],
layout: 'fit',
items: [{
xtype: 'list',
store: ToolbarDemo.eventstore,
itemTpl: '{title}',
grouped: true
}],
//This was an experiment, safe to leave out?
initComponent: function() {
//ToolbarDemo.eventstore.load();
ToolbarDemo.views.Eventscard.superclass.initComponent.apply(this, arguments);
}
});
Ext.reg('eventscard', ToolbarDemo.views.Eventscard);
现在,当我导航到该卡片视图时,会显示加载覆盖/微调器,但是就其而言,项目列表不会出现。对我做错了什么想法?
答案 0 :(得分:1)
我对此并不熟悉,我这样用来显示列表..试试这个
ToolbarDemo.eventstore.load();
var itemTpl = new Ext.XTemplate('<div id='title'>{title}</div>');
this.eventStoreList = new Ext.List({
id: 'eventStoreList',
store: ToolbarDemo.eventstore,
itemTpl: itemTpl,
height: 370,
indexBar: false
});
this.eventStoreListContainer = new Ext.Container( {
id : 'eventStoreListContainer',
items : [this.eventStoreList]
});
this.items = [this.eventStoreListContainer];
ToolbarDemo.views.Eventscard.superclass.initComponent.apply(this);
答案 1 :(得分:0)
嗯,我搞定了!
我在商店代码的末尾添加了ToolbarDemo.eventstore.read();
,将XML文件保存在根目录'www'文件夹中,然后使用list方法正常工作!
有没有人知道为什么这个(调用远程XML)会出问题?
编辑:结果证明它在浏览器中运行良好,但不适用于iPhone模拟器。所以现在我已经将它设置回远程URL并将URL添加到PhoneGap白名单中并且效果很好:)