使用 store Sencha Touch 2 将数据加载到列表中并且不出现

Posted

技术标签:

【中文标题】使用 store Sencha Touch 2 将数据加载到列表中并且不出现【英文标题】:Loading data into List using store Sencha Touch 2 and don't appear 【发布时间】:2015-08-20 21:28:28 【问题描述】:

我按照此处发布的示例使用 store Sencha Touch 2 将数据加载到列表中,它似乎可以工作,但是当我尝试做同样的事情时,什么都没有显示

我是 sencha touch 的新手,对它了解不多 谁能告诉我我做错了什么?

这是代码:

主要:

var blogsStore = Ext.create("GS.store.blogs"); //put this in the items list
Ext.define('GS.view.Main',
extend:'Ext.navigation.View',
xtype:'blog',
requires:[
    'Ext.dataview.List',
    'Ext.data.proxy.JsonP',
    'Ext.data.Store',
    'GS.store.blogs',
    'GS.model.BlogModel'
],
config: 
    title:'Blog',
    iconCls:'star',
    items:[
        
            xtype:'list',
            itemTpl:'title',
            title:'Recent Posts',
            store: blogsStore //Store instance here. And items are in array, not Object
         
     ]


);

型号:

Ext.define('GS.model.BlogModel', 
extend: 'Ext.data.Model',

config: 
    fields: [
         name: 'title', type: 'auto' ,
         name: 'author', type: 'auto' ,
         name: 'content', type: 'auto' 

    ]

);

商店:

Ext.define('GS.store.blogs',
extend:'Ext.data.Store',
requires: [
    'GS.model.BlogModel',
    'Ext.data.proxy.JsonP',
],
config:
     model:'GS.model.BlogModel',
    autoLoad :true,
proxy:
            type:'jsonp',
            url:'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
            reader:
                type:'json',
                rootProperty:'responseData.feed.entries'
            
        

);

app.js:

Ext.application(
name: 'GS',

requires: [
    'Ext.MessageBox'
],

views: [
    'Main'
],

stores: [
    'blogs'
],

models:[
    'BlogModel'
],

icon: 
    '57': 'resources/icons/Icon.png',
    '72': 'resources/icons/Icon~ipad.png',
    '114': 'resources/icons/Icon@2x.png',
    '144': 'resources/icons/Icon~ipad@2x.png'
,

isIconPrecomposed: true,

startupImage: 
    '320x460': 'resources/startup/320x460.jpg',
    '640x920': 'resources/startup/640x920.png',
    '768x1004': 'resources/startup/768x1004.png',
    '748x1024': 'resources/startup/748x1024.png',
    '1536x2008': 'resources/startup/1536x2008.png',
    '1496x2048': 'resources/startup/1496x2048.png'
,

launch: function() 
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    // Initialize the main view
    Ext.Viewport.add(Ext.create('GS.view.Main'));
,

onUpdated: function() 
    Ext.Msg.confirm(
        "Application Update",
        "This application has just successfully been updated to the latest version. Reload now?",
        function(buttonId) 
            if (buttonId === 'yes') 
                window.location.reload();
            
        
    );

);

【问题讨论】:

【参考方案1】:

我发现了错误 在声明 rootProperty 时,我尝试访问返回的 json 中的“条目”元素,但该属性不存在 然后你应该修改rootProperty:

rootProperty:'responseData.feed'

现在应用程序可以正常工作了

【讨论】:

以上是关于使用 store Sencha Touch 2 将数据加载到列表中并且不出现的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sencha Touch 2 中选择性地填充 Store

Sencha Touch:将商店传递给复选框?

Sencha Touch 2:同一个 Store 中的两个 REST 请求

如何在 Sencha Touch 2 proxy/model/store/whatever 上设置 CRUD 方法?

在 Sencha Touch/ExtJS 中不使用 store 删除列表项

Sencha Touch ResumeEvents 是一场灾难