在 ExtJS 组件中设置属性/属性

3

是否可以像jQuery的[.attr(attributeName, value)][1]那样将Ext JS组件属性(可见性、值等)设置为特定值?

我正在获取组件名称、属性/属性名称和值,并需要更新用户界面。我的第一种解决方案使用了一个“字典”(是的,我是一个C#开发人员),它调用给定属性的正确方法并支持可见性、值、启用。

var methodMapper = {
  "visibility" : function(comp, value) {
    if(value == "true" || value == "on" || value == "1" || value == "visible")
      comp.show();
    else
      comp.hide();
  },
  "value" : function(comp, value) {
     comp.setValue(value);
  },
  "enable" : function(comp, value) {
    if(value == "true" || value == "on" || value == "1" || value == "visible")
      comp.enable();
    else
      comp.disable();
  }
};

function receiveMessage(element, property, value) {
  var func = methodMapper[property];
  if(!func) return;
  var comp = Ext.getCmp(element); // retrieve component
  func(comp, value); // set property to value
}

有没有更好的解决方案来设置组件中的属性?我想扩展支持的属性到宽度,高度,可拖动等。

1个回答

4

@Robar

如果您想操作HTML元素的属性,最好在ExtJS组件(例如面板)上调用getEl()方法以获取与该组件关联的元素,然后您可以像在jQuery中做的那样获取/设置属性,因为在一些情况下,您可能无法将属性映射到组件属性或方法。


不,我不想使用HTML元素的属性。但正如你在上句中提到的那样,问题在于并非每个属性都可以映射到每个组件上。我想我会采用我的“字典”方法,并检查组件类型(按钮、文本框等)。 - Robar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接