我有一个ExtJS 6应用程序。我使用TagField组件与自定义选择器,这是一个带有工具栏和一些按钮的网格。在某些情况下,我想使用不同的选择器。要使用的拣货员将由商店记录数确定。
因此,如果记录计数是> 50我想显示选择器A,否则显示选择器B.
我面临的问题是选择器是在它的存储之前创建的(这是有意义的),一旦选择器被创建,它就无法更改AFAIK。当商店加载并检查记录数时,更改选择器已经太晚了。
那么有什么方法可以摧毁选择器并设置一个新的选择器?我需要像" setPicker()"方法
由于
答案 0 :(得分:1)
更实用的解决方案是创建两个TagField
组件。一个使用选择器A,另一个使用选择器B.然后你只需要为商店load
事件添加一个监听器,并根据你的条件显示/隐藏适当的组件。
不太整洁,但实施简单快捷。
答案 1 :(得分:0)
我只是使用一个选择器并更改它的存储以保持简单。挑选器(组合框)渲染后,您可以根据选择器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);
}
}