我已经搜索了,我可以看到这已被问过很多次,但我甚至无法弄清楚如何对数据做一个简单的console.log
。
我的商店:
Ext.define('AventosPlanningTool.store.Aventos', {
extend:'Ext.data.Store',
config:
{
model:'AventosPlanningTool.model.Aventos',
proxy:
{
type:'ajax',
url:'resources/json/frames.json',
reader:
{
type:'json',
rootProperty:'options'
}
},
autoLoad: true
}
});
我可以在网络选项卡中看到JSON文件正在加载。此时我无法弄清楚该怎么做。在数据存储中,我将模型设置为AventosPlanningTool.model.Aventos
,即下面的文件。
Ext.define('AventosPlanningTool.model.Aventos', {
extend:'Ext.data.Model',
xtype:'AventosModel',
config:
{
fields: [
'name',
'image'
]
}
});
我的JSON现在非常简单:
{
"name": "Cabinet Type",
"options": [
{
"name": "Face Frame",
"image": "resources/images/aventos/frames/faceframe.png"
},
{
"name": "Panel",
"image": "resources/images/aventos/frames/panel.png"
}
]
}
即使我可以对数据做console.log
非常有帮助。我无法弄清楚如何使用这些数据。我已经检查了文档中的两个指南:http://docs-origin.sencha.com/touch/2.2.1/#!/guide/models,http://docs-origin.sencha.com/touch/2.2.1/#!/guide/stores而我无法理解它
答案 0 :(得分:1)
在sencha中,数据在模型中定义,并实际存储在商店中。您可以通过代理加载JSON。将模型视为sql和store中的表作为表中的实际数据。现在,如果要从商店获取数据并对其执行操作,则必须加载商店。要将数据提取到列表中,可以使用xtype定义列表:'list'指定商店商店:'yourStoreName'并提供显示该数据的模板。这是我试图说的非常详细的解释。
http://docs-origin.sencha.com/touch/2.2.1/#!/api/Ext.data.Store 这个: http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-2/
答案 1 :(得分:1)
为您的商店添加加载侦听器:
Ext.define('AventosPlanningTool.store.Aventos', {
extend:'Ext.data.Store',
config: {
model:'AventosPlanningTool.model.Aventos',
proxy: {
type:'ajax',
url:'resources/json/frames.json',
reader: {
type:'json',
rootProperty:'options'
}
},
autoLoad: true,
listeners: {
load: function(st, g, s, o, opts) {
st.each(function(record) {
console.log(record.get('name') + ' - ' + record.get('image'));
});
}
}
});
答案 2 :(得分:0)
查看数据存储的API文档。请注意,只有在加载商店后才能访问数据。例如:
store.load();
store.getAt(0) // null, the store load hasn't completed yet.
您可以使用each
方法遍历商店中的每条记录。您可以使用getAt
store.each(function(rec) {
console.log(rec.get('name'), rec.get('image'));
});
console.log(store.getAt(0).get('name'));
通常,您会将商店绑定到列表,API文档中有大量示例。
答案 3 :(得分:0)
我认为你缺少的是在商店里听“加载”事件。
store.on('load', function(thisStore, records) {
console.log(records[0].get('name'));
})