EXTJS如何在没有代理的情况下使用JSon Reader

时间:2015-11-27 05:57:57

标签: json extjs

下面是我尝试使用商店中的JSon Reader加载某些记录的代码。 我无法在网格上看到这个。 能不能指出我错过了什么,因为我不想使用代理/网址为JSon。

var itemsPerPage = 10;
Ext.Loader.setConfig({enabled: true});
Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.util.*',
    'Ext.toolbar.Paging'
]);

Ext.define('Assemble', {
    extend: 'Ext.data.Model',
    fields: [
       {name: 'lot_no', type: "string"}
    ],
    idProperty: 'lot_no'
});

Ext.onReady(function() {
    Ext.QuickTips.init();

    var jsonString = '{"result":[{"lot_no":"MT6261"},{"lot_no":"MT6262"},{"lot_no":"MT6263"}]}';

    // create the data store
    var store = Ext.create('Ext.data.Store', {
        pageSize: itemsPerPage,
        proxy:{
            type: 'ajax',
            reader: {
                type: 'json',
                root: 'result',
                model: Assemble
            }
        }
    });
    store.loadData(Ext.decode(jsonString)); 



    console.log(store);

    var pagingToolbar = Ext.create('Ext.PagingToolbar',{
        pageSize: itemsPerPage,
        store: store,
        displayInfo: true,
        displayMsg: ' {0}-{1},{2}',
        emptyMsg: "empty."
    });

    // create the Grid
    var grid = Ext.create('Ext.grid.Panel', {
        store: store,
        disableSelection: true,
        loadMask: true,
        columns: [
            {
                text     : 'LOT_NO',
                flex     : 1,
                sortable : true,
                dataIndex: 'lot_no'
            }
        ],
     bbar : pagingToolbar,
     renderTo: 'grid',
     viewConfig: {
         stripeRows: true,
         enableTextSelection: true
     }
    });

    store.loadPage(1);
});

2 个答案:

答案 0 :(得分:0)

代理必须与url一起使用。所以,你不能像这样使用代理。我删除了代理,将模型放在商店中,你必须将对象加载到商店,但在你的情况下包含rootProperty('result',我只获取主要对象,或者你可以从jsonString中删除'结果')。然后,它工作。 Chck这个小提琴:

https://fiddle.sencha.com/#fiddle/11or

#logo {
    display:inline-block;
    transform: scale(1.3);
    margin-left:50px;
}

答案 1 :(得分:0)

为什么你甚至使用读卡器?您的数据是本地数据,因此只需解码字符串并传入您想要的内容:

https://fiddle.sencha.com/#fiddle/11qc

此外,您的数据是本地数据,因此不需要分页工具栏。在Ext JS 5+中,网格将使用缓冲渲染器(如果网格具有从高度/宽度配置或从父布局定义的大小),因此将所有数据加载到存储中不会影响性能(除了创建记录) 。网格只会呈现可见的内容以及两边的几个。