【问题标题】:What does ExtJS ComboBox triggerAction: "all" really do?ExtJS ComboBox triggerAction: "all" 到底做了什么?
【发布时间】:2010-08-27 04:57:42
【问题描述】:

我尝试创建一个简单的 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" 真的应该做什么?

【问题讨论】:

    标签: javascript combobox extjs


    【解决方案1】:

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

    【讨论】:

    • 现在说得通了,但这是一个名字很糟糕的选项!
    • 名称的原因是该配置继承自TriggerField,因此在组合之外更通用,甚至不必与其他实现中的过滤相关。但是,是的,一个更具描述性的组合特定别名可能会很好。
    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 2011-12-10
    • 2016-10-26
    • 2017-04-20
    • 2012-05-19
    • 2019-09-05
    • 2012-10-06
    • 2022-01-10
    相关资源
    最近更新 更多