如何在 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