加载页面时列表为空

时间:2012-10-24 00:00:01

标签: sencha-touch sencha-touch-2

我尝试使用商店将数据加载到列表中。当我运行我的代码时,列表值为空,列表不为空,但它是空白的。

这是我的控制器的一部分,我尝试将数据添加到存储。

  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'}
      ]

});         

4 个答案:

答案 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' ]
}


});