【问题标题】:ExtJS 4.0.7 ItemSelector change "titles" dynamicallyExtJS 4.0.7 ItemSelector 动态更改“标题”
【发布时间】:2014-11-19 12:30:41
【问题描述】:

我使用 ExtJS 4.0.7 的 ItemSelector 元素。默认情况下,ItemSelector 的“标题”是:“Available”和“Selected”。我可以动态更改吗?

【问题讨论】:

    标签: javascript extjs


    【解决方案1】:

    查看这里的源代码:http://docs.sencha.com/extjs/4.2.2/source/ItemSelector.html#Ext-ux-form-ItemSelector-method-setupItems 似乎有两个配置可用于告诉项目选择器用于列表的标题:fromTitle 和 toTitle。

    所以我想,如果您使用自定义 fromTitle(左侧“可用”列表的标题)和 toTitle(右侧“已选择”列表的标题)属性设置项目选择器,它将实现您的目标想。不过我自己没试过……

    更新

    抱歉,以上内容仅适用于 Ext 4.2.2。我查看了 Ext 4.0.7,看来您需要使用不同的配置。您需要使用的配置称为“多选”,您可以在其中设置标题。请参见下面的示例:

    {
      xtype: 'itemselector',
      name: 'itemselector',
      id: 'itemselector-field',
      anchor: '100%',
      fieldLabel: 'ItemSelector',
      imagePath: '../ux/images/',
      store: myStore,
      displayField: 'text',
      valueField: 'value',
      value: ['3', '4', '6'],
      allowBlank: false,
      msgTarget: 'side',
      multiselects: [{listTitle: 'First title'},{listTitle: 'Second title'}]
    }
    

    更新 2

    为了动态设置标题,您需要使用 multiselects 属性配置带有 id 的面板:

    {
                xtype: 'itemselector',
                name: 'itemselector',
                id: 'itemselector-field',
                anchor: '100%',
                fieldLabel: 'ItemSelector',
                imagePath: '../ux/images/',
                store: ds,
                displayField: 'text',
                valueField: 'value',
                value: ['3', '4', '6'],
                allowBlank: false,
                msgTarget: 'side',
                multiselects: [{listTitle: 'First title', id: 'itemselector-from-panel'},{listTitle: 'Second title', id: 'itemselector-to-panel'}]
    }
    

    这将允许您稍后获得对它们的引用。我创建了一个按钮来动态设置以下标题:

    Ext.create('Ext.button.Button',{
        text: 'Change Titles',
        renderTo: Ext.getBody(),
        handler: function(){
            var fromField = Ext.getCmp('itemselector-from-panel'),
                    toField = Ext.getCmp('itemselector-to-panel');
            fromField.panel.setTitle('my new title');
            toField.panel.setTitle('my newer title');
        }
    });
    

    【讨论】:

    • 它工作正常,谢谢。但是我需要在渲染 ItemSelector 元素后动态设置属性“multiselects”(可能是一些方法“setMultiselects”或类似的东西)
    • @fidel150992 再次更新答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多