以编程方式设置 dijit Select 小部件的选定值
Posted
技术标签:
【中文标题】以编程方式设置 dijit Select 小部件的选定值【英文标题】:Programmatically set the selected value of a dijit Select widget 【发布时间】:2011-10-23 22:47:18 【问题描述】:每当另一个选择小部件的值发生变化时,我都会使用选项填充 dijit 选择小部件。
在我的应用程序中,有一个“巴士路线”下拉菜单和一个“巴士站”下拉菜单。 用户已分配应可更新的公交路线和站点。
所以当页面第一次加载时,路由下拉框有所有可用的路由,你当前分配到的路由就是选中的值。停靠点菜单已加载与该路线关联的所有停靠点,但没有选择值,因此默认情况下,它是第一个选项。
每当用户更改当前选择的路线时,停靠点菜单都会相应更改并填充与该路线关联的所有停靠点。
我的问题是,使用dojo,如何在停止菜单中设置“已选择”选项?
我希望明确哪个站点当前分配给该用户,而不是“选定”站点是路线中的第一个选项。
谢谢。
【问题讨论】:
【参考方案1】:selectWidget.set("value", someValue);
如果您通过options
属性(具有label
、value
等的对象数组)指定选项,则someValue
应与这些对象之一的value
匹配。 (请注意,您也可以在传递给options
的数组中的一个对象中指定selected: true
。)
如果您通过store
属性提供来自dojo.data 存储的项目,那么someValue
应该与存储项目之一的标识相匹配。
(编辑)注意:我在上面假设“dijit 选择小部件”指的是dijit.form.Select
。如果您实际使用dijit.form.ComboBox
或dijit.form.FilteringSelect
,同样的代码行仍然适用,适用于最后一段中的商店。在带有select
标签的声明性实例化的情况下,ComboBox 和 FilteringSelect 仍然会创建一个商店,其项目的标识是 select 标签内的选项的值。
【讨论】:
【参考方案2】://With dojo version 1.9
//search for the item in store dojo/store/Memory with the corresponding id value
var objItem = store.get("1");
//set the combobox's item
comboBox.set("item", objItem);
【讨论】:
这正是我要找的地方!以上是关于以编程方式设置 dijit Select 小部件的选定值的主要内容,如果未能解决你的问题,请参考以下文章
何时必须调用以编程方式实例化的小部件的 startup() 方法?
如何添加 optgroup do dijit.form.Select 或其他小部件类型
Dojo dijit.form.select:创建新的选择小部件后,旧小部件的选定值无法更改
Angular UI select2 指令 - 以编程方式更新模型未反映在小部件上