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 のデフォルトの successProperty は「success」です。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 に答える