0

我已经很久没有问题了,但我终于在这里碰壁了。无论如何,让这变得容易。我正在尝试在 extjs 3.4 中创建一个 JSON 存储(与工作相关,不,我没有更新)。好吧,我像往常一样创建了带有正确响应的查询并填写了它。我的问题是我希望能够在应用程序上提取和使用 JSON 上的 1 个额外属性。来自 chrome 响应对象的 JSON 示例:

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

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

4

1 回答 1

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()要求。

于 2012-12-31T10:49:49.680 回答