1

我有一个 ExtJs 商店。

var fieldsStore = new Ext.create('Ext.data.Store', {
model : 'FieldsModel',
proxy : {
    type : 'ajax',
    url : 'queryBuilder_getQueryDetails',
    extraParams : {
        queryID : queryID
    },
    reader : {
        type : 'json'
    }
},
listeners : {
    load : function(store, records, successful, operation, eOpts) {
        if (successful) {
            records.forEach(function(rec) {
                // default settings: if datatype is INTEGER - SUM
                if (rec.get('fieldType') == 'INTEGER') {
                    rec.set('fieldSettingKey', 'SUM');
                    rec.set('fieldSettingValue', 'Sum');
                } else {
                    // else select ROWHEADER by default
                    rec.set('fieldSettingKey', 'ROWHEADER');
                    rec.set('fieldSettingValue', 'Row Header');
                }
            });
            store.commitChanges();
        }
    }
}
});

现在,当我这样做时fieldsStore.proxy.extraParams.queryID = arrQuery.queryId;,我在 Internet Explorer 中遇到错误。不在 Chrome 或 FF 中,而仅在 IE 中。

它说fieldsStore.proxy.extraParams是空的或未定义的。

谁能帮助为什么这只发生在 IE 中?

4

3 回答 3

1

你也可以试试这个

fieldsStore.getProxy().setExtraParam('queryID', arrQuery.queryId);

于 2013-05-31T11:18:37.787 回答
1

找到了替代方案

fieldsStore.proxy.extraParams = {queryID : arrQuery.queryId};
于 2013-05-31T11:22:08.010 回答
0

尝试:

fieldsStore.getProxy().extraParams = arrQuery.queryId;

编辑:

当你这样做时,你可以删除它:

fieldsStore.getProxy().extraParams = {'queryID' : queryID}此代码自动定义您的 extraParams 配置。

var fieldsStore = new Ext.create('Ext.data.Store', {
model : 'FieldsModel',
proxy : {
    type : 'ajax',
    url : 'queryBuilder_getQueryDetails',
    //-----------------------
    extraParams : {
        queryID : queryID
    },
    //-----------------------
    reader : {
        type : 'json'
    }
},
...
});
于 2013-05-31T10:00:02.070 回答