如何在 extraParams 商店 extjs 上设置动态值

Posted

技术标签:

【中文标题】如何在 extraParams 商店 extjs 上设置动态值【英文标题】:How to set dynamic value on extraParams store extjs 【发布时间】:2021-02-05 13:49:20 【问题描述】:

嗨,我在将动态值存储到 extjs 上的 extraParams 时遇到问题。

我的情况是,当我在这里console 时,我可以从我的组件中获取价值:

listeners: 
    load: function (store, records, success) 
        console.log(Ext.ComponentQuery.query('combobox[reference=terminal2]')[0])
    

我从该组件中获取了值,但是当我尝试将其传递给 extraParam 时出现错误 undefined..

proxy: 
    type: 'ajax',
    url: Config.getApi() + 'api/public/index',
    extraParams: 
        dParams: Ext.ComponentQuery.query('combobox[reference=terminal2]')[0]
    ,
,

我收到错误undefined..

我的完整商店代码

Ext.define('Admin.store.npk.mdm.LayananAlat', 
    extend: 'Ext.data.Store',

    alias: 'store.layananalat',

    requires: [
        'Config'
    ],

    autoLoad: true,

    proxy: 
        type: 'ajax',
        url: Config.getApi() + 'api/public/index',
        actionMethods: 
            read: 'POST'
        ,
        paramsAsJson: true,
        timeout: 120000,
        extraParams: 
            dParams: Ext.ComponentQuery.query('combobox[reference=terminal2]')[0]
        ,
        headers: 
            'token': Ext.util.Cookies.get('Tokens')
        ,
        reader: 
            type: 'json',
            rootProperty: function (obj) 
                return obj.result
            ,
            totalProperty: function (obj) 
                return obj.count
            
        
    ,
    listeners: 
        load: function (store, records, success) 
            console.log(Ext.ComponentQuery.query('combobox[reference=terminal2]')[0])
        
    
);

或者是否有另一种方法可以将动态值传递给 extraParams 上的 proxy 存储在 extjs 中?

【问题讨论】:

【参考方案1】:

您的代理设置将在构建阶段设置,此时您的 UI 很可能尚未构建,因此您的组件查询无法返回引用的 UI 元素。

关闭autoLoad 并从存储定义中删除代理部分。然后在可以确定 UI 已经构建好的地方设置代理。例如。在视图的显示/绘制事件上,您可以添加类似

的代码
   const store = Ext.getStore('layananalat');
   store.setProxy(
        type: 'ajax',
        url: Config.getApi() + 'api/public/index',
        actionMethods: 
            read: 'POST'
        ,
        paramsAsJson: true,
        timeout: 120000,
        extraParams: 
            dParams: Ext.ComponentQuery.query('combobox[reference=terminal2]')[0]
        ,
        headers: 
            'token': Ext.util.Cookies.get('Tokens')
        ,
        reader: 
            type: 'json',
            rootProperty: function (obj) 
                return obj.result
            ,
            totalProperty: function (obj) 
                return obj.count
            
   );
   store.load();

【讨论】:

以上是关于如何在 extraParams 商店 extjs 上设置动态值的主要内容,如果未能解决你的问题,请参考以下文章

Extjs PROXY查询params无法传参,改用extraParams

在网格 sortchange 事件之前更改存储 extraParams

如何在 Extjs 中调用附加到商店的模型

如何在 ExtJS 4.1 中销毁商店?

如何从 Extjs4 中的商店获取字段类型?

ExtJS:如何让用户在 Combobox 中输入不在商店中的值