如何在只有一个组合框中有一个选定的值

如何在只有一个组合框中有一个选定的值

问题描述:

我正在使用ExtJS 4.2.1,并且我知道有autoSelect配置选项,它将默认为组合商店的第一个元素。如何在只有一个组合框中有一个选定的值

但是我正在寻找的可能是通过覆盖,只有当组合框的商店中只有一个项目时才这样做。

我想在存储级别做的,但当时如果我有10个组合框在我的应用程序,这是10倍的代码相同的位......

任何想法?

我已经得到这个目前为止。如果有人有更好的想法或理由,我不应该使用这种方法来做我的重写,请张贴。

Ext.define('App.overrides.form.ComboBox', { 
     override: 'Ext.form.ComboBox', 
     onDataChanged: function() { 
      var store = this.getStore(); 
      if (store != null) { 
       if (store.count() == 1) { 
        var value = store.getAt(0).data[this.valueField]; 
        this.setValue(value); 
       } 
      } 
      this.callParent(); 
     } 
}); 
+0

唯一的“反对”原因是该重写会改变** all **组合的行为。你真的想要吗? – Saki 2014-09-29 21:32:20

+0

@Saki现在,我会说是的。 – 2014-09-29 21:45:30

+1

那好吧。我觉得把它应用到所有的组合上似乎很奇怪。如果你不想要它,可以使用上面的组合扩展组合,而不是覆盖,然后从这个需要行为的扩展组合中进一步扩展。 (希望清楚) – Saki 2014-09-29 21:51:04