Extjs 3.4自定义JSONReader

时间:2012-12-23 10:28:34

标签: javascript extjs3

我已经有一段时间没有提问了,但我终于在这里碰到了一堵墙。无论如何,要做到这一点很简单。我试图在extjs 3.4中创建一个JSON存储(工作相关,不,我没有更新)。 好吧,我像往常一样用正确的响应创建查询并填写它。我的问题是我在JSON上有一个额外的属性,我希望能够在应用程序上提取和使用。 来自chrome中的响应对象的我的JSON示例:

myInventory: [{Priority:1, PMNumber:444, Description:fix-a-tape, Assets:3, Storage_Count:0,…},…]
percent: 97.040498442368
totalCount: "3"

现在,我知道格式正确,因为我使用的网格已填充,但我无法获取百分比属性。所以我的问题是,当你有一个额外的参数在EXTjs上不常见时,如何在数据存储区构建代码块上提取额外的参数,在我的情况下,百分比是多少? 我尝试在JSONReader上进行metachange,但我得到的只是百分比:属性上的“百分比”,因为我在创建数据存储区后检查它。

1 个答案:

答案 0 :(得分:0)

Ext.data.JsonReader有一个属性jsonData,这正是你需要的。一个简单的例子:

Ext.onReady(function() {
    var store = new Ext.data.JsonStore({
        url: 'data/test.json',
        root: 'dataRoot',
        fields: ['fieldA', 'fieldB'],
        idProperty: 'id',
        storeId: 'myStore'
    });

    store.on('load', function(store) {
        console.log(store.reader.jsonData.someOtherProperty);
    });

    store.load(); 

});

并且data / test.json看起来像这样:

{
    dataRoot: [{
        id: 0,
        fieldA: 'a',
        fieldB: 'b' 
    }],
    someOtherProperty: 'abc'
}

还可以有一种替代方法,您手动(不是通过store.load())执行Ext.Ajax请求,使用您需要的属性,然后使用从Ajax请求获得的数据手动调用Ext.data.JsonStore.loadData()