ExtJS ComboBox触发动作是什么:“所有”真的有用吗?

时间:2009-06-12 12:19:14

标签: javascript combobox extjs

我尝试创建一个简单的ComboBox:

var combo1 = new Ext.form.ComboBox({
  store: [1,2,3],
  renderTo: document.body
});

但是以这种方式书写它的行为很奇怪:

  • 当您第一次弹出下拉列表时,它提供了三种选择。
  • 你选择一个。
  • 但是当您尝试更改选择后,下拉菜单只提供一个选项 - 您之前选择的选项。

我将我的代码与Ext主页上的samples进行了比较,发现添加triggerAction: "all"解决了我的问题:

var combo2 = new Ext.form.ComboBox({
  triggerAction: "all",
  store: [1,2,3],
  renderTo: document.body
});

triggerAction的ExtJS文档并没有告诉我很多:

  

单击触发器时要执行的操作。   使用'all'运行allQuery指定的查询   配置选项(默认为'查询')

我没有指定allQuery选项。实际上,我根本不想对服务器执行查询。

那么triggerAction真正做到了什么?

当我想要一个简单的静态组合框时,我真的应该把它设置为"all"吗?

1 个答案:

答案 0 :(得分:22)

选择项目后,将过滤列表以匹配当前文本值。在您的情况下,它始终是所选的值,但对于多字符值更明显(请参阅Ext中的状态名称示例)。如果删除所选值,则下拉列表将返回到具有所有值。 triggerAction:'all'表示不过滤,始终显示所有值。