0

我正在使用 Sencha touch 2.1 构建一个移动应用程序。我正在尝试将谷歌电子表格加载为列表的数据源。

我已经公开了 google 电子表格,您可以在此链接中找到它:

https://docs.google.com/spreadsheet/pub?key=0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E&output=html

但是我无法让它工作。

这是我到目前为止的代码:

该模型

Ext.define('MyApp.model.InfoList', {
    extend: 'Ext.data.Model',

    config: {
        fields: [
            'Title',
            'Description',
            'Icon'
        ],
        idProperty: '_id'
    }
});

商店

Ext.define('MyApp.store.InfoList', {
extend : 'Ext.data.Store',

config : {
    model : 'MyApp.model.InfoList',
    proxy: {
        type: 'jsonp',
         url :  'https://spreadsheets.google.com/feeds/list/0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E/od6/public/basic?alt=json-in-script',
        reader: {
            type: 'json',
            root: 'feed.entry'
        }
    }

}
});

风景

Ext.define('MyApp.view.home.infolist', {
    extend : 'Ext.List',
    xtype : 'infoListView',
    disableSelection: true,
    config : {
        title : 'Info List',
        itemTpl: [
                    '<div class="itemInfo">',
                        '<div class="iconDiv">',
                            '<img src="{Icon}" class="icon"/>',
                        '</div>', 
                        '<div class="descriptionDiv">',
                            '<div class="title">{Title}</div>',
                            '<div class="description">{Description}</div>',
                        '</div>',
                        '<div class="disclosureDiv">',
                            '<img src="images/infoListDisclosure.png" class="iconImage"/>',
                        '</div>',
                        '<div class="clear"></div>',
                     '</div>',
                ].join(''),
        store : 'InfoList'
    }
});

该列表始​​终为空。如果我在代理中使用 jsonp 而不是 json 应用程序将停止运行。

有没有办法在警报中查看我从代理获得的响应?或任何可能出现问题的迹象表示赞赏

PS:我在 IBM Worklight 上构建应用程序,但我使用 sencha 进行编码。我不确定这是否会影响任何事情

谢谢

4

1 回答 1

0

JSON 响应中的属性都是小写的,例如“标题”和“内容”,而您的模型字段名称的第一个字母是大写的,例如“标题”和“描述”。此外,JSON 中没有像“描述”这样的字段,它的“内容”和“标题”数据都在“$t”属性中。

我建议您在控制台中转储并查看解析的 JSON 对象,以了解如何正确呈现其属性。

还有一件事,而不是使用:

https://spreadsheets.google.com/feeds/list/0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E/od6/public/basic?alt=json-in-script

用这个:

https://spreadsheets.google.com/feeds/list/0AhW0xtL9j2bAdHlwRE1qcE1WdDVLa2dRdDBxNTJBV0E/od6/public/values?alt=json-in-script

获取列作为entry对象的属性。在这种情况下,您可以像这样定义模型:

Ext.define('MyApp.model.InfoList', {
    extend: 'Ext.data.Model',

    config: {
        fields: [
            {name : 'id',type : 'string', mapping:'id.$t'},
            {name : 'Title',type : 'string', mapping:'gsx$Title.$t'},
            {name : 'Description',type : 'string', mapping:'gsx$Description.$t'},
            {name : 'Icon',type : 'string', mapping:'gsx$Icon.$t'}
        ],
        idProperty: 'id'
    }
});
于 2013-05-15T05:37:01.037 回答