Sencha onSelect in colorMenu设置父按钮的背景颜色

时间:2013-11-26 15:28:10

标签: extjs sencha-architect

(旧状态,实际状态见下面的编辑。)

我想将菜单按钮的颜色设置为colorPicker子菜单中的所选颜色,以便用户始终可以看到选择。这就是我所拥有的:

onColorPicker1Select: function(colorpicker, color, e0pts) {
    Ext.fly(colorpicker).parent.style.backgroundColor=color;
}

此时,Chrome告诉我它“无法设置未定义的backgroundColor”,因此该元素似乎被正确选择,只是它没有“样式”属性。

编辑:我有点进一步。我在Architect中的按钮上设置了ui =“plain”和style =“background-color:#fc0”,并且在Chrome中正确显示了黄色。但是以下代码无法更改颜色:

onColorPicker1Select: function(colorpicker, color, e0pts) {
    Ext.fly(colorpicker).parent.style="background-color:"+color;
}

没有错误,没有,niente,nada。但元素没有正确着色。

{
    xtype: 'button',
    itemId: 'color1',
    style: 'background-color:#fc0;',
    text: '1. Farbe',
    menu: {
        xtype: 'colormenu',
        listeners: {
            select: {
                fn: me.onColorPicker1Select,
                scope: me
            }
        }
    }
}

如何更改按钮的样式?

EDIT2:我应该提到我正准备使用多个colorPickers的函数 - 这就是我选择相对路径(colorpicker.parent)而不是绝对路径(Ext.findById)的原因。

1 个答案:

答案 0 :(得分:3)

您的代码不正确,因为:

  1. Ext.fly(colorpicker).parent不是属性,而是功能,请参阅http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.dom.Element.Fly
  2. 按钮不是colorpicker元素
  3. 的父级

    您需要获取按钮的元素并为其设置背景颜色。这段代码应该有效:

      onColorPicker1Select: function(colorpicker, color, e0pts) {
          var button = colorpicker.up('button');
          button.getEl().setStyle('background-color', '#' + color);
      }