2

我正在尝试禁用使用store.

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

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

  1. 遵循此线程中的建议:如何禁用 dijit.form.Select 中的单个选项?. 但是,FilteringSelect 示例中的“stateStore”存储对象没有“选项”属性。

  2. 试图访问存储对象中的适当元素。例如,在 FilteringSelect 示例中,我执行以下操作:

    var optionItem = stateStore.get("AZ");
    optionItem.disabled = true;
    stateStore.put(optionItem);
    select.startup();
    

这两种方法似乎都不起作用,因此在 Dijit Select 控件中禁用项目的唯一方法似乎是使用该options属性。提前感谢您的解决方案!

4

2 回答 2

2

商店中的数据(实际上是业务数据)和呈现的数据(包含视图逻辑)之间存在差异。如果您使用商店,您实际上是在使用商店提供渲染数据。

要更改呈现的数据(= 选择中的选项),您需要使用API 文档中所读的getOptions(idx)方法。要更改选项的状态,您可以使用:dijit/form/Selectdisabled

registry.byId("mySelect").getOptions(myId).disabled = true;

这就是你所需要的。更改商店数据无济于事,因为它代表业务数据,而不是视图数据。我还制作了一个示例JSFiddle,其中第二个选项被禁用。

于 2013-09-11T09:51:27.377 回答
0

对于 dojo 1.10 和 upto 1.x 最新版本,您需要添加一行代码来更新选择 UI:

registry.byId("mySelect").getOptions(myId).disabled = true;
registry.byId("mySelect").updateOption(myId);
于 2018-08-20T11:47:21.693 回答