ExtJS 4菜单颜色选择器中的CustomColors颜色(Ext.menu.ColorPicker)

时间:2014-03-15 16:52:01

标签: javascript extjs extjs4 color-picker

感谢您查看此消息!

我在其中一个使用Ext.menu.ColorPicker的项目中遇到问题 我不知道为什么(这可能是非常简单的,我希望)但是选择器根本不会假设我需要的自定义颜色!

以下是一些示例代码,说明了我的问题:

Ext.onReady(function () {
var customColors = [
        'fa7166', 'cf2424', 'a01a1a', '7e3838', 'ca7609', 'f88015', 'eda12a', 'd5b816',
        'e281ca', 'bf53a4', '9d3283', '7a0f60', '542382', '7742a9', '8763ca', 'b586e2',
        '7399f9', '4e79e6', '2951b9', '133897', '1a5173', '1a699c', '3694b7', '64b9d9',
        'a8c67b', '83ad47', '2e8f0c', '176413', '0f4c30', '386651', '3ea987', '7bc3b5'
    ];

var picker = Ext.create('Ext.picker.Color');

picker.colors[0] = '556677';
picker.colors = customColors;

    var btn = Ext.create('Ext.Button', {
        menu: {
            xtype: 'colormenu',
            picker: picker,
            value: 'FFFFFF',
            handler: function (obj, rgb) {
                Ext.Msg.alert('border-color: ' + rgb.toString());
            } // handler
        }, // menu
        renderTo: Ext.getBody(),
        text: 'Menu Button'
    }).showMenu();
}); // onReady()

该行:

picker.colors[0] = '556677';

效果很好,你可以看到,我可以改变数组的元素0。

但是这一行:

picker.colors = customColors;

应该将整个新颜色数组分配给选取器,我不知道为什么,但它似乎不起作用。

我需要组件具有所有这些颜色,32种颜色不是选择器上默认的40种默认颜色!

我该怎么办?
提前谢谢......

1 个答案:

答案 0 :(得分:1)

您使用了错误的小部件组合,而是将Ext.menu.ColorPicker嵌入到另一个Ext.menu.Menu中,而不是按原样使用Ext.menu.ColorPicker,然后您将成为很高兴,像这样

var customColors = ['fa7166', 'cf2424', ...];
var pickerMenu = Ext.create('Ext.menu.ColorPicker');
pickerMenu.picker.colors = customColors;

var btn = Ext.create('Ext.Button', {
    menu: pickerMenu, // menu
    renderTo: Ext.getBody(),
    text: 'Menu Button'
}).showMenu();

Here's您的代码的修改版本,适用于自定义颜色列表。希望它有助于解决您的问题。