在 ExtJS 4 中为组合框使用商店时如何发送额外参数?
我知道我可以在代理设置中使用“extraParams”,但这会影响使用同一商店的所有元素。
也就是说,如果我有一个网格,它正在使用一个名为“用户”的商店,它将列出系统中的所有用户。同时,我有一个组合框,它也使用商店“用户”,但这次我想列出所有具有“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 中使用它呢?我只是在表单对象中指定“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
},
但是,它给出错误“Uncaught TypeError: Cannot read property 'ServersIP' of undefined”
但是名字是正确的:
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 的参数中只有一个“一级”变量,它就可以工作。出于某种原因,当我传入代理 => extraParams => param1 时它不喜欢它。
这个有效:
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:combobox 中
//set combobox store
{
xtype: 'combobox',
queryMode:'remote',
store : Ext.data.StoreManager.lookup('YourStoreId'),
...
...
}
希望您理解我提出的解决方案。
关于javascript - 将商店加载到 ExtJS 4 中的组合框时如何发送额外参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763154/
这里是JavaScript初学者。假设我有一个带有3个参数的javascript函数:functionf(arg1,arg2,arg3){//dostuff}我知道我可以调用f(value1,value2);在这种情况下,函数范围内的arg1将为value1,arg2将为value2,而arg3将为null。一切正常。但是,如果我想调用仅向arg1和arg3赋值的函数,我需要执行如下操作:f(value1,null,value2);有没有一种方法可以以更像C#的方式指定哪些参数具有哪些值(无需将未给定参数指定为null)?类似这样的事情:为了仅使用arg1和arg3的值调用f,我会写f
如何在Sequelize.js模型中定义对象数组字段?我需要这样的东西{"profiles":[{"profile_id":10,"profile_pictures":["pic1.jpg","pic2.jpg","pic3.jpg"],"profile_used_id":12},...//moreprofiles]}我检查了docs,但找不到相关的数据类型,我在这里遗漏了什么吗? 最佳答案 我已经成功地通过定义我的模型来
我有一个JSP页面,我在其中提取存储在数据库中的时间戳作为字符串,格式为ThuAug21201422:09:23GMT+0530(IndiaStandardTime).当然,我可以按原样在页面中显示它,但是我一直在寻找一种javascript解决方案,它可以让我根据用户的本地时区转换此时间戳。有办法吗?或者对于这样的时间戳是不可能的?非常感谢任何帮助,我的问题可能听起来很愚蠢,因为我仍在熟悉javascript。谢谢 最佳答案 我自己想通了,我能够完成我需要的。将timestamp从数据库传递给varnewDate(timestam
这个问题在这里已经有了答案:WhatisJavaScript'shighestintegervaluethatanumbercangotowithoutlosingprecision?(21个答案)关闭8年前。因此,我开始尝试使用递归函数找到第100个斐波那契数,并使用以下代码内存该函数。Function.prototype.memoize=function(){varoriginalFunction=this,slice=Array.prototype.slice;cache={};returnfunction(){varkey=slice.call(arguments);i
我有一个折线图,每次页面刷新时它都会更改数据,这很好,但我需要通过用户点击来刷新。这是因为页面上最终会有其他输入字段,刷新页面会破坏他们当前的session。jsfiddle-http://jsfiddle.net/darcyvoutt/dXtv2/这是创建该行的代码设置:functioneconomyData(){//RoundsvarnumRounds=10;//Stabilityofeconomyvarstable=0.2;varunstable=0.6;varstability=unstable;//Typeofeconomyvarboom=0.02;varflat=0;var
我对Angular指令还很陌生,我很难让它做我想做的事。这是我所拥有的基础知识:Controller:controller('profileCtrl',function($scope){$scope.editing={'section1':false,'section2':false}$scope.updateProfile=function(){};$scope.cancelProfile=function(){};});指令:directive('editButton',function(){return{restri
我正在使用FirefoxAdd-onSDK创建扩展并执行PageMod。此代码位于main.js中。...exports.main=function(){varpageMod=require("sdk/page-mod");pageMod.PageMod({include:"*",contentScriptWhen:'end',contentStyleFile:[self.data.url("css/style.css"),self.data.url("css/font-awesome.css")],con
我正在创建一个javascript对象,如下所示varmyObjects;for(vari=0;i<10;i++){vareachObject={"id":i};myObjects.push(eachObject);}message={"employeeDetails":myObjects}之后我将它们按如下方式进行字符串化JSON.stringify(message);上述方法是否按照对象之前的顺序对对象进行了字符串化?在stringify之后,它们会像以前一样按0,1,2....9的顺序排列吗? 最佳答案
有什么方法可以实现background-size:cover的效果,同时也填充边框后面的区域。为了更好地说明这一点,请看下图:左图使用background-size:cover并整齐地填满整个框本身不管图像是否肖像或风景,但隐藏在半透明的顶部和底部边框后面。第二张图片是使用background-size:auto260px规则创建的,它给出了我想要的效果,但只起作用,因为我知道在这种情况下背景是风景(并且盒子本身是200px和边框30px)。用于渲染上述两个框的JSFiddle可以是found这里。我很难相信这对于纯css是不可能的,但即使是基于javascript的解决方案也是如此(
如何使用Razor获取文本框的值?<div><inputtype="text"id="somevalue"name="somevalue"class="form-control"/><inputtype="button"value="Search"class="btnbtn-success"/></div><ulid="ReportsList"class="nav">@foreach(
如何在Sequelize.js模型中定义对象数组字段?我需要这样的东西{"profiles":[{"profile_id":10,"profile_pictures":["pic1.jpg","pic2.jpg","pic3.jpg"],"profile_used_id":12},...//moreprofiles]}我检查了docs,但找不到相关的数据类型,我在这里遗漏了什么吗? 最佳答案 我已经成功地通过定义我的模型来
我有一个JSP页面,我在其中提取存储在数据库中的时间戳作为字符串,格式为ThuAug21201422:09:23GMT+0530(IndiaStandardTime).当然,我可以按原样在页面中显示它,但是我一直在寻找一种javascript解决方案,它可以让我根据用户的本地时区转换此时间戳。有办法吗?或者对于这样的时间戳是不可能的?非常感谢任何帮助,我的问题可能听起来很愚蠢,因为我仍在熟悉javascript。谢谢 最佳答案 我自己想通了,我能够完成我需要的。将timestamp从数据库传递给varnewDate(timestam
这个问题在这里已经有了答案:WhatisJavaScript'shighestintegervaluethatanumbercangotowithoutlosingprecision?(21个答案)关闭8年前。因此,我开始尝试使用递归函数找到第100个斐波那契数,并使用以下代码内存该函数。Function.prototype.memoize=function(){varoriginalFunction=this,slice=Array.prototype.slice;cache={};returnfunction(){varkey=slice.call(arguments);i
我有一个折线图,每次页面刷新时它都会更改数据,这很好,但我需要通过用户点击来刷新。这是因为页面上最终会有其他输入字段,刷新页面会破坏他们当前的session。jsfiddle-http://jsfiddle.net/darcyvoutt/dXtv2/这是创建该行的代码设置:functioneconomyData(){//RoundsvarnumRounds=10;//Stabilityofeconomyvarstable=0.2;varunstable=0.6;varstability=unstable;//Typeofeconomyvarboom=0.02;varflat=0;var
我对Angular指令还很陌生,我很难让它做我想做的事。这是我所拥有的基础知识:Controller:controller('profileCtrl',function($scope){$scope.editing={'section1':false,'section2':false}$scope.updateProfile=function(){};$scope.cancelProfile=function(){};});指令:directive('editButton',function(){return{restri
我正在使用FirefoxAdd-onSDK创建扩展并执行PageMod。此代码位于main.js中。...exports.main=function(){varpageMod=require("sdk/page-mod");pageMod.PageMod({include:"*",contentScriptWhen:'end',contentStyleFile:[self.data.url("css/style.css"),self.data.url("css/font-awesome.css")],con
我正在创建一个javascript对象,如下所示varmyObjects;for(vari=0;i<10;i++){vareachObject={"id":i};myObjects.push(eachObject);}message={"employeeDetails":myObjects}之后我将它们按如下方式进行字符串化JSON.stringify(message);上述方法是否按照对象之前的顺序对对象进行了字符串化?在stringify之后,它们会像以前一样按0,1,2....9的顺序排列吗? 最佳答案
有什么方法可以实现background-size:cover的效果,同时也填充边框后面的区域。为了更好地说明这一点,请看下图:左图使用background-size:cover并整齐地填满整个框本身不管图像是否肖像或风景,但隐藏在半透明的顶部和底部边框后面。第二张图片是使用background-size:auto260px规则创建的,它给出了我想要的效果,但只起作用,因为我知道在这种情况下背景是风景(并且盒子本身是200px和边框30px)。用于渲染上述两个框的JSFiddle可以是found这里。我很难相信这对于纯css是不可能的,但即使是基于javascript的解决方案也是如此(
如何使用Razor获取文本框的值?<div><inputtype="text"id="somevalue"name="somevalue"class="form-control"/><inputtype="button"value="Search"class="btnbtn-success"/></div><ulid="ReportsList"class="nav">@foreach(
实际上,我的Controller中有一个对象,我只是想将该对象导出为.xls或.csv文件。我使用了很多这样的方法:HTML<scriptsrc="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js"type="text/javascript"/><divng-controller="myCtrl"><buttonng-click="exportData()">Export</button><br