我使用dijit.form.ComboBox
,但要求已更改,现在dijit.form.Select
更合适。
但是,在更改窗口小部件类型后,我收到错误:
TypeError:_b6d.getLabel不是函数
从文档http://dojotoolkit.org/reference-guide/1.10/dijit/form/Select.html我看到dijit.form.Select
期望商店中的字段id
和label
,而我的商店有id
和{{1} }。
文档没有给出如何覆盖默认值的示例。那么,如何为name
指定id
和label
属性?
我的数据如下:
dijit.form.Select
如果不可能,我可以使用什么dijit小部件进行选择仅限于来自商店的商品?
答案 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将选择限制为仅限商店中的商品。实现它并不是很麻烦,因为ComboBox
和FilteringSelect
都使用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"}]