我正在尝试禁用使用store
填充的dijit / Form / FilteringSelect控件中的选项。
遵循本指南:http://dojotoolkit.org/documentation/tutorials/1.9/selects_using_stores/
似乎只有在不使用商店的情况下创建Select控件才有可能。我从调试FilteringSelect示例中推断出这一点。我尝试过两种禁用项目的方法:
遵循此主题中的建议:How to disable a single option in a dijit.form.Select?。但是,FilteringSelect示例中的“stateStore”存储对象没有“options”属性。
尝试访问商店对象中的相应元素。例如,在FilteringSelect示例中,我执行以下操作:
var optionItem = stateStore.get("AZ");
optionItem.disabled = true;
stateStore.put(optionItem);
select.startup();
这两种方法似乎都不起作用,因此似乎在Dijit Select控件中禁用项目的唯一方法是使用options
属性。
提前感谢您的解决方案!
答案 0 :(得分:2)
商店中的数据(实际上是业务数据)与渲染数据(包含视图逻辑)之间存在差异。如果你使用商店,你实际上是在你的商店里提供你的渲染数据。
要更改呈现的数据(=您选择的选项),您需要使用getOptions(idx)
的{{1}}方法,因为您可以在API documentation中阅读。要更改选项的dijit/form/Select
状态,您可以使用:
disabled
这就是你所需要的一切。更改商店数据无济于事,因为它代表业务数据,而不是查看数据。我还做了一个例子JSFiddle,其中第二个选项被禁用。
答案 1 :(得分:0)
对于dojo 1.10和最新的1.x最新版本,您需要添加一行代码来更新选择UI:
registry.byId("mySelect").getOptions(myId).disabled = true;
registry.byId("mySelect").updateOption(myId);