3

我正在尝试通过 dataview 显示一些数据,但由于某种原因,我收到了一条空文本消息(无数据)。这是我的数据视图:

xtype        : 'dataview',
emptyText    : 'No data',
id           : 'cartdata',
multiSelect  : true,
plugins      : new Ext.DataView.DragSelector( { dragSafe : true } ),
store        : new Ext.data.JsonStore({
    url           : '/aecms/user-photos-view/',
    autoLoad      : true,
    root          : 'data',
    fields        : [
    'images'
    ],
    listeners : {
        scope : this,
        load  : function(store) {
            var data = store.reader.jsonData;
            if (data.systemMessage) {
                infoReport(data.systemMessage.title, data.systemMessage.message, data.systemMessage.icon);
            }
        } 
    } 
}),
tpl          : new Ext.XTemplate(
    '<tpl for=".">',
    '<tpl for="images">',
    '<a title="{id}">test</a>',
    '</tpl>',
    '</tpl>'
    )

这是来自 php 的数据:

{"data":{"images":{"id":"2"}},"status":"success"}

我是 extjs 的新手,感谢任何帮助。

4

1 回答 1

1

从外观上看,您没有正确返回 successProperty 值。将您的 php 代码的响应更改为,如下所示。

您商店中 JsonReader 的默认成功属性为“成功”。ExtJs 会在你的服务器响应中寻找这个属性。

http://docs.sencha.com/ext-js/3-4/#!/api/Ext.data.JsonReader-cfg-successProperty

此外,您可能希望将数据作为 json 数组而不是对象返回。您不需要数据数组中的图像对象。

服务器响应:

{ "data":[{"id":"2"}], "success":true }

Javascript:

    ...
store        : new Ext.data.JsonStore({
    url           : '/aecms/user-photos-view/',
    autoLoad      : true,
    root          : 'data',
    fields        : [
    'id'
    ],
    listeners : {
        scope : this,
        load  : function(store) {
            var data = store.reader.jsonData;
            if (data.systemMessage) {
                infoReport(data.systemMessage.title, data.systemMessage.message, data.systemMessage.icon);
            }
        } 
    } 
})
tpl: new Ext.XTemplate(
    '<tpl for=".">',
    '<a title="{id}">test</a>',
    '</tpl>'
)
于 2012-12-03T12:48:13.003 回答