我有一个 ExtJS 6 应用程序。我正在使用带有自定义选择器的 TagField 组件,该选择器是一个带有工具栏和一些按钮的网格。在某些情况下,我想使用不同的选取器。要使用的选取器将由商店记录计数确定。
因此,如果记录计数> 50,我想显示选取器 A,否则显示选取器 B。
我面临的问题是选择器是在其存储之前创建的(这是有道理的),一旦创建了选择器,就无法更改 AFAIK。当商店加载并检查记录计数时,更改选择器已经太晚了。
那么有什么方法可以摧毁选择器并设置一个新的吗?我需要类似"setPicker()"的方法。
谢谢
更实用的解决方案是创建两个TagField
组件。一个使用拾取器 A,另一个使用拾取器 B。然后,您只需为商店添加一个侦听器load
事件,并根据您的条件显示/隐藏相应的组件。
不是那么整洁,但实施起来简单快捷。
我只会使用一个选择器并更改它的存储以保持简单。选取器 (组合框) 呈现后,可以根据选取器 A 的存储的记录计数确定要用于它的存储
{
xtype: 'combobox',
fieldLabel: 'Label',
listeners: {
afterrender: {
fn: 'onComboboxAfterRender',
scope: 'controller'
}
}
}
在控制器中:
onComboboxAfterRender: function(component, eOpts) {
var store1 = this.getViewModel().getStore('store1'),
store2 = this.getViewModel().getStore('store2');
if(store1.count > 50){
component.bindStore(store1);
}else{
component.bindStore(store2);
}
}