我尝试使用商店将数据加载到列表中。当我运行我的代码时,列表值为空,列表不为空,但它是空白的。
这是我的控制器的一部分,我尝试将数据添加到存储。
var loginStore = Ext.getStore('instance');
var record = [{id:id, issued_at:issued, instance_url:instance, signature:sig, access_token:access, myBaseUri:baseUri}];
loginStore.add(record);
以下是我制作列表的视图部分
{
xtype :'list',
id : 'list1',
loadingText: 'Loading Projects',
emptyText: '<div>No Projects Found</div>',
onItemDisclosure: true,
itemTpl: '<div>{issued_at}</div>',
height: 320,
store : 'instance'
}
这不起作用,但当我用
替换itemTpl:'<div>{issued_at}</div>'
时
itemTpl:'<div>{id}</div>'
它似乎有效。我做错了什么?
这是我的商店:
Ext.define('GS.store.instance',{
extend: 'Ext.data.Store',
requires: ['GS.model.login'],
config:{
model: 'GS.model.login'
}
});
这是我的模特:
Ext.define('GS.model.login',{
extend: 'Ext.data.Model',
fields:[
{name: 'id', type: 'string'},
{name: 'issued_at', type:'string'},
{name: 'instance_url', type:'string'},
{name: 'signature', type:'string'},
{name: 'access_token', type:'string'},
{name: 'myBaseUri', type:'string'}
]
});
答案 0 :(得分:0)
您创建记录的方式是错误的。试试这个:
var record = Ext.create('YOUR_MODEL', {
id : id,
issued_at: issued,
instance_url: instance,
...
});
希望这有帮助。
答案 1 :(得分:0)
尝试使用此示例:
Ext.define('Contact', {
extend: 'Ext.data.Model',
config: {
fields: ['firstName', 'lastName']
}
});
var store = Ext.create('Ext.data.Store', {
model: 'Contact',
},
data: [
{ firstName: 'Tommy', lastName: 'Maintz' },
{ firstName: 'Rob', lastName: 'Dougan' },
{ firstName: 'Ed', lastName: 'Spencer' },
{ firstName: 'Jamie', lastName: 'Avins' },
{ firstName: 'Aaron', lastName: 'Conran' },
{ firstName: 'Dave', lastName: 'Kaneda' },
{ firstName: 'Jacky', lastName: 'Nguyen' },
{ firstName: 'Abraham', lastName: 'Elias' },
{ firstName: 'Jay', lastName: 'Robinson'},
{ firstName: 'Nigel', lastName: 'White' },
{ firstName: 'Don', lastName: 'Griffin' },
{ firstName: 'Nico', lastName: 'Ferrero' },
{ firstName: 'Jason', lastName: 'Johnston'}
]
});
Ext.create('Ext.List', {
fullscreen: true,
itemTpl: '<div class="contact">{firstName} <strong>{lastName}</strong></div>',
store: store,
});
答案 2 :(得分:0)
当你在使用id而不是issued_at时获得列表中的值时,问题似乎是,而不是函数/ models / store那么多,而是使用issued_at变量本身。你确定它正在进入商店吗?
尝试在商店加载时添加此商品,或使用例如chrome
在浏览器中运行商店console.log(Ext.getStore("instance").getAt(0).data.id);
console.log(Ext.getStore("instance").getAt(0).data.issued_at);
您应该会看到第一个数据项的结果。
如果你获得一个id但只是为iss_at“未定义”,你就会知道问题与记录有关。在这种情况下,我会尝试在您尝试将其添加到商店之前记录您的issued
变量,以确保它实际已定义。
如果需要,请报告结果以获得进一步的帮助/讨论。
答案 3 :(得分:0)
事实证明我在模型定义中缺少配置选项。
Ext.define('GS.model.login',{
extend: 'Ext.data.Model',
config:{
fields:[ 'id','issued_at','instance_url','signature','access_token','myBaseUri' ]
}
});