ExtJS - 动态更改下拉/选择器

时间:2016-06-10 02:03:43

标签: extjs

我有一个ExtJS 6应用程序。我使用TagField组件与自定义选择器,这是一个带有工具栏和一些按钮的网格。在某些情况下,我想使用不同的选择器。要使用的拣货员将由商店记录数确定。

因此,如果记录计数是> 50我想显示选择器A,否则显示选择器B.

我面临的问题是选择器是在它的存储之前创建的(这是有意义的),一旦选择器被创建,它就无法更改AFAIK。当商店加载并检查记录数时,更改选择器已经太晚了。

那么有什么方法可以摧毁选择器并设置一个新的选择器?我需要像" setPicker()"方法

由于

2 个答案:

答案 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);
    }
}