Dojo 1.9:Dijit:禁用使用商店填充的dijit / Form / FilteringSelect中的选项

时间:2013-09-11 09:27:38

标签: javascript dojo

我正在尝试禁用使用store填充的dijit / Form / FilteringSelect控件中的选项。

遵循本指南:http://dojotoolkit.org/documentation/tutorials/1.9/selects_using_stores/

似乎只有在不使用商店的情况下创建Select控件才有可能。我从调试FilteringSelect示例中推断出这一点。我尝试过两种禁用项目的方法:

  1. 遵循此主题中的建议:How to disable a single option in a dijit.form.Select?。但是,FilteringSelect示例中的“stateStore”存储对象没有“options”属性。

  2. 尝试访问商店对象中的相应元素。例如,在FilteringSelect示例中,我执行以下操作:

    var optionItem = stateStore.get("AZ");
    optionItem.disabled = true;
    stateStore.put(optionItem);
    select.startup();
    
  3. 这两种方法似乎都不起作用,因此似乎在Dijit Select控件中禁用项目的唯一方法是使用options属性。 提前感谢您的解决方案!

2 个答案:

答案 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);