javascript – 在ExtJS 4中将商店加载到组合框时如何发送额外的参数?

前端之家收集整理的这篇文章主要介绍了javascript – 在ExtJS 4中将商店加载到组合框时如何发送额外的参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在ExtJS 4中为组合框使用商店时,如何发送额外的参数?

我知道我可以在代理设置中使用“extraParams”,但这会影响所有使用相同商店的元素.

如果我有一个网格正在使用名为“用户”的商店,将列出系统中的所有用户.同时我也有一个comboBox,它也使用了“Users”这个商店,但是这次我想列出所有“status = 2”的用户,因此我想发送参数“& status = 2”在Ajax调用后端.

如果我使用像:

store.getProxy().extraParams = {
  status: 2
};

它将工作,但网格将同时更新,也使用“& status = 2”.我只想要组合框使用参数.

我想我可以关闭网格上的“自动更新”,然后在组合框上的“渲染”事件上设置“extraParams”,然后在组合框隐藏时取消设置,但是会是一个非常难看的解决方案.

我也可以将商店复制到“Users2”,并将其用于组合框,但这也是一个难看的解决方案.

这样做的正确方法是什么?对大多数人来说,这是一件非常常见的事情.

更新1:

我知道我可以使用像:

store.load({
  params:{
    'foo1': bar1,'foo2': bar2
  } 
});

但是如何在ExtJS 4 MVC中使用它?在那里我只是在form-object中指定“store:Users”.如何将这些额外的参数发送到.load()函数

我尝试了以下内容

{
xtype: 'comboBox',fieldLabel: 'Server',name: 'server',//store: 'ServersIP',store: new Cloud.store.ServersIP(),/*
listeners: {
    beforeload: function(store,options) {
        console.log(store);
    }
},*/

valueField: 'id',displayField: 'name_id',emptyText: 'Select a Server...',editable: false
},

但是,它给出错误“未捕获TypeError:无法读取属性”ServersIP“未定义”

但这个名字是正确的:

Ext.define('Cloud.store.ServersIP',{

extend: 'Ext.data.Store',model: 'Cloud.model.Server',

另外,我究竟要把听众呢?我假设在我的例子中我没有得到那个正确的?

更新2:

我现在有一点解决方案:

store: Ext.create('Cloud.store.ServersIP',{
proxy: {
    extraParams: {
        param1: 'value1',param2: 'value2'
    }
},}),

以上不行.如果我在Ext.Create的参数中只有一个“一级”变量,它将起作用.由于某种原因,当我传入proxy =>时,它不喜欢它extraParams =>参数1.

这一个工作:

store: Ext.create('Cloud.store.ServersIP',{
aaa: 'bbb'
}),

但当然,我的extraParams不在那里.任何人都知道如何解决这个最后一部分?

解决方法

我刚刚解决了这个问题.
comboBox queryMode:带有附加参数的remote.

只需在initComponent中的“VIEW”中实例化存储,并覆盖代理

//instantiate the store

var store = Ext.create('Cloud.store.ServersIP',{
    storeId: 'YourStoreId'
});
store.proxy.extraParams = { param1: 'value1',param2: 'value2' };

和xtype:组合框

//set comboBox store

{
    xtype: 'comboBox',queryMode:'remote',store : Ext.data.StoreManager.lookup('YourStoreId'),...
    ...
}

我希望你明白我提出的解决方案.

猜你在找的JavaScript相关文章