Sencha列表显示商店

时间:2013-07-19 00:50:36

标签: list extjs

首先:关于这个确切的事情有很多问题。我花了大部分时间阅读所有这些,显然我仍然没有理解这一点。

我从httprequest(而不是标准的ajax调用)获取我的商店数据,这是有效的,并将我的数据添加到商店。但无论我尝试什么,这些数据都不会填充列表。目前我的代码如下:

型号:

Ext.define('estarCamera.model.Event', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'Id',
            'Title',
            'Content',
            'Image',
            'Location',
            'Latitude',
            'Longitude',
            'Radius',
            'Starts',
            'Expires',
            'Prestart'
        ]
    }   
});

商店:

Ext.define('estarCamera.store.Events', {
    extend: 'Ext.data.Store',
    config: {
        model: 'estarCamera.model.Event',
        storeId: 'EventStore'       
    }
});

数据正在填充商店:

 var jsonResponse = JSON.parse(xhr.responseText);

 if(jsonResponse.status == "Success"){
//Success
var eventsJsn = JSON.parse(jsonResponse.message);
$.each(eventsJsn, function(){
    $.each(this, function(k,v){
        //Events root element
        $.each(this, function(k,v){
            //Each 'Event' element
            var eStore = Ext.getStore('EventStore');
            eStore.add({
                Id: this.ID,
                Title: decodeURIComponent(this.Title),
                Content: decodeURIComponent(this.Content),
                Image: this.Image,
                Location: this.Location,
                Latitude: this.Latitude,
                Longitude: this.Longitude,
                Radius: this.Radius,
                Starts: this.Starts,
                Expires: this.Expires,
                Prestart: this.Prestart
            });
            eStore.sync();
        })
    });
});

理想情况下,这将填充:

Ext.define('estarCamera.view.Events', {
    extend: 'Ext.Panel',
    xtype: 'events',
    requires: [
        'estarCamera.store.Events',
        'Ext.form.FieldSet',
        'Ext.List'
    ],
    config: {
        title:'Events',
        iconCls: 'star',
        layout: 'vbox',
        items:[
        {
            docked: 'top',
            xtype: 'toolbar',
            title: 'Active Events'
        },
        {
            xtype: 'container',
            layout: 'fit',
            flex: 10,
            items:[{
                xtype:'list',
                title: 'Events',
                width: '100%',
                height: '100%',
                store: 'Events',
                styleHtmlContent: true,
                itemTpl: new Ext.XTemplate(
                    '<div class="outerEvent">',
                    '<h1>title{Title}</h1>',
                    '<p>{Content}</p>',
                    '</div>'                
                )
            }]
        }]      
    }
});

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

好吧,现在感觉有点愚蠢..最终(在一段令人尴尬的长时间之后)发现这是因为我的名单试图引用'Events'这是我商店的名称以及我认为它应该如何工作。将此更改为'EventStore'(我的商店的商店),它运作良好。