指定'标签'和'价值' dijit.form.Select的属性

时间:2014-07-23 07:06:15

标签: javascript dojo

我使用dijit.form.ComboBox,但要求已更改,现在dijit.form.Select更合适。

但是,在更改窗口小部件类型后,我收到错误:

  

TypeError:_b6d.getLabel不是函数

从文档http://dojotoolkit.org/reference-guide/1.10/dijit/form/Select.html我看到dijit.form.Select期望商店中的字段idlabel,而我的商店有id和{{1} }。

文档没有给出如何覆盖默认值的示例。那么,如何为name指定idlabel属性?

我的数据如下:

dijit.form.Select

如果不可能,我可以使用什么dijit小部件进行选择仅限于来自商店的商品?

3 个答案:

答案 0 :(得分:3)

labelAttr上有一个dijit/form/Select属性,可用于更改标签属性的名称。

例如:

new Select({
    store: myStore,
    labelAttr: "name" // Now the name attribute will be used
}, "mySelect");

如果您还想更改用于ID的属性(在这种情况下没有必要,但您也询问了如何指定该属性),那么您应该查看idProperty dojo/store/Memory 1}},例如:

var myStore = new Memory({
    idProperty: "id",
    data: [{
        "id":1,
        "name":"Item 1"
    }, {
        "id":2,
        "name":"Item 2"
    }, {
        "id":3,
        "name":"Item 3"
    }]
});

可以在JSFiddle上找到完整的示例:http://jsfiddle.net/NvKgH/

答案 1 :(得分:1)

您可以使用FilteringSelect将选择限制为仅限商店中的商品。实现它并不是很麻烦,因为ComboBoxFilteringSelect都使用dijit/form/ComboBoxMixin来提供组合框功能。

答案 2 :(得分:0)

我认为你误读了这些文件 它提到here来自商店的数据必须具有 id 标签属性,而不是值和标签属性。
商店 ID 将是您使用get(" value")调用获得的
要获得,您需要在小工具上使用 get(" value")功能,即

widget.get("value")

标签我假设它是

widget.get("label")


[{"id":1,"name":"Item 1","label":"Item 1"},{"id":2,"name":"Item 2","label":"Item 2"},{"id":3,"name":"Item 3","label":"Item 3"}]