这是一个由两部分组成的问题:
主要问题:假设我有一个组合框(代码如下),它正在从商店中提取。假设我有一个数组,我想用它来过滤数据,以便在下拉列表中只显示某些值。我似乎找不到这样做的参数……有简单的方法吗?
第二个问题:在创建下拉列表后,我还需要能够根据用户的操作禁用和重新启用下拉列表中的项目。是否有一个功能可以在下拉列表中重新启用/禁用项目?
注意:禁用的意思是“不存在”,也就是在dom中删除,但仍存在于非过滤存储中。
{
xtype: 'combobox',
anchor: '100%',
name: 'Permission_id',
fieldLabel: 'Permissions',
hideLabel: false,
displayField: 'Name',
forceSelection: true,
store: 'PermissionStore',
typeAhead: true,
valueField: 'id',
valueNotFoundText: 'Add Permission'
}
2条答案
按热度按时间bxfogqkk1#
我想你所需要的就是使用过滤器。如果您只想在下拉列表中显示某些值,您只需要过滤存储,如果您有一个数组,您可以使用ArrayStore。
关于第二个问题,如果你过滤你的商店,原始值不会丢失,它们会在内部保存为快照,然后当你清除过滤器时,旧值会再次显示在下拉列表中。
请看一下这个工作示例:http://jsfiddle.net/lontivero/Mz6S4/1/
第一个答案:方法是.filter()。例如:
第二个答案:清除商店的过滤器
uqxowvwt2#
正如lontivero所说,过滤器解决了您的问题:
primary:数组可以包含数据,但过滤器会在下拉列表中隐藏它
次要:过滤器可以更改为在下拉列表中隐藏和显示
那么,剩下的问题是如何从非Ext代码中更改过滤器。在这里,您可以使用Ext只是javascript,可以从与Ext无关的任何其他javascript调用。
因此:
1.在HTML DOM可以访问的位置/范围中添加一些应用过滤器进行添加和删除的函数
1.将它们添加到(纯HTML)按钮的
onclick
处理程序中真正的诀窍是通过使用按id的Ext查找来访问存储。
因此,如果以下代码(在lontivero的jsfiddle上扩展)直接位于js文件中(或脚本标记中),它会满足您的要求:
(jsfiddle:http://jsfiddle.net/mCv6A/)
实际使用时需要考虑的事项(而不是在简化的示例中):
addJames
、delJames
和它们在对象或立即数函数中使用的变量(noPablo
和noJames
等) Package 起来,这样这些变量就不会扰乱全局(窗口)范围