0

首先:到处都是关于这个确切的事情的一堆问题。我花了一天的大部分时间阅读它们,但显然我仍然无法理解这一点。

我从 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>'                
                )
            }]
        }]      
    }
});

有谁知道为什么会这样?

4

1 回答 1

0

好吧,现在感觉有点傻......最终(经过一段令人尴尬的长时间)发现这是因为我的列表试图引用“事件”,这是我商店的名称以及我认为它应该如何工作。将其更改为“EventStore”(我的商店的 storeid),它运行良好。

于 2013-07-22T23:10:13.787 回答