以编程方式设置 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 属性(具有labelvalue 等的对象数组)指定选项,则someValue 应与这些对象之一的value 匹配。 (请注意,您也可以在传递给options 的数组中的一个对象中指定selected: true。)

如果您通过store 属性提供来自dojo.data 存储的项目,那么someValue 应该与存储项目之一的标识相匹配。

(编辑)注意:我在上面假设“dijit 选择小部件”指的是dijit.form.Select。如果您实际使用dijit.form.ComboBoxdijit.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 指令 - 以编程方式更新模型未反映在小部件上

如何使 dijit.form.Select 与具有相同值的多个项目一起使用?

Dojo Dijit - 小部件中的小部件