ExtJS DataView仅显示最后一个JSON元素

时间:2012-07-18 14:57:31

标签: javascript json extjs

我有以下代码:

new Ext.DataView({
    store: new Ext.data.JsonStore({
        url: 'request/getAssetsJSON',
        baseParams: {
            _id: this.request._id
        },
        root: 'results',
        fields: [ 'attachment', 'id', 'name', 'property', 'type' ],
        autoLoad: true
    }),
    emptyText: 'No images to display',
    tpl: new Ext.XTemplate(
        '<tpl for=".">',
            '<div class="thumb-wrap" id="{name}">',
            '<div class="thumb"><p>Test</p><img height="45" src="request/getAsset?id={id}&attachment={attachment}" title="{name}"></div>',
            '<span class="x-editable">{name}</span></div>',
        '</tpl>',
        '<div class="x-clear"></div>'
    )
})

request / getAssetsJSON发送的JSON是:

[{"attachment":"img1.png","id":"4dc90e2a6ba440e37601d5d074011e2e","name":"img1"},   
{"attachment":"img2.png","id":"4dc90e2a6ba440e37601d5d074011e2e","name":"img2"},
{"attachment":"img3.png","id":"4dc90e2a6ba440e37601d5d074011e2e","name":"img3"}]

我的问题是DataView只显示最后一个图像(img3.png),并且只有一个请求/ getAsset的GET请求。

我想ExtJS如何迭代我的模板,或者加载数据的方式有问题,但我在这里不知所措。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您对所有项目都有相同的ID“id”:“4dc90e2a6ba440e37601d5d074011e2e”。您可以在服务器端更改json响应或为此数据创建模型并设置idProperty:'_ id'(默认idProperty:'id')

Ext.define('YouModel', {
    extend: 'Ext.data.Model',

    config: {
        idProperty : '_id',
        fields: [
            {name: 'id',          type: 'auto'},

            {name : 'attachment',      type : 'string'},
            {name : 'name',  type : 'string'}
        ]

    }
});

new Ext.DataView({
    store: new Ext.data.JsonStore({
        url: 'request/getAssetsJSON',
        baseParams: {
            _id: this.request._id
        },
        root: 'results',
        model: 'YourModel',
        autoLoad: true
    }),
  ....
})