从 onclick 事件访问组合框中的选定值
Posted
技术标签:
【中文标题】从 onclick 事件访问组合框中的选定值【英文标题】:Access the selected value in a combo box from onclick event 【发布时间】:2013-09-12 16:42:44 【问题描述】:我有一个包含值列表的组合框。 ComboBox 未绑定到数据源。 我在组合框上有一个 onClick 事件,我需要知道选择了什么值。我可以做一个 getComponent("comboBox1").getValue() 但我知道这是访问控件值的效率最低的方法。有没有更好的方法来访问所选值?
【问题讨论】:
那个组合框真的被大量使用以至于getComponent
不够高效吗?
虽然你可能是对的。但是我有一个相当复杂的 XPage,正在进行大量的处理。我一直在检查我的代码,并试图尽可能多地摆脱对 getComponent 的引用。结果非常显着。我建议远离 getComponent。我尽可能直接访问数据源,同样避免使用后端文档。
我同意最好使用最有效的方式,看起来你得到了很好的回应!
【参考方案1】:
我会将组合框绑定到 viewScope 变量。在其他地方易于访问和使用。 但是有很多方法可以获得价值,但这是我更喜欢的方式。
【讨论】:
@Bill Fox - 我这样做了,效果很好。以前从未有机会检查过这个,但它是一个简洁、快速的解决方案。非常感谢。【参考方案2】:在任何服务器端事件处理程序的上下文中,javascript 变量this
指的是事件处理程序本身。因为事件处理程序实际上是组件,并且被视为与它们关联的任何组件的“子”,所以表达式 this.getParent()
将返回关联组件的句柄。
因此,当您只是试图获取触发事件的同一组件的值时(在您的情况下,组合框的 onClick
事件):
this.getParent().getValue()
这不会像getComponent()
那样遭受同样的低效率,因为它不需要搜索……它只是在组件树中向上导航一级。但是,如果其他组件将受益于知道它的值,您还应该遵循 Fredrik 的建议并将该组件绑定到一个 viewScope
变量,这样您就可以从内存中检索该值,而不是尝试从页面的其他位置定位 UI 组件结构。
【讨论】:
只需在getParent
之后添加括号,就像在第一段中一样。那个小修改是我不允许做的。
谢谢,确实绑定到 viewScope 并喜欢它。从来没有真正弄清楚为什么要绑定到范围变量,但它工作得很好,我可以看到我可能会返回并更改其他代码中的一些内容。以上是关于从 onclick 事件访问组合框中的选定值的主要内容,如果未能解决你的问题,请参考以下文章