Im设置Dojo选择下拉列表的默认值,即id = -999从json对象。 这工作正常,但在扩展默认值更改为第二个位置时,选择框单击时,id = 29被设置为默认(第一个位置)。 此问题主要发生在Chrome浏览器中。 附加的是json对象和UI行为的图像。Dojo选择下拉扩展更改默认值
在此先感谢。
Im设置Dojo选择下拉列表的默认值,即id = -999从json对象。 这工作正常,但在扩展默认值更改为第二个位置时,选择框单击时,id = 29被设置为默认(第一个位置)。 此问题主要发生在Chrome浏览器中。 附加的是json对象和UI行为的图像。Dojo选择下拉扩展更改默认值
在此先感谢。
您需要添加labelAttr
设置store
时,例如
new Select({
store: new MemoryStore({ data: g_data(), getLabel: function(o) {return o.label;} }),
labelAttr: "label",
value: "-999",
onChange: function(v) { document.getElementById("output").innerHTML = "Selected " + v; }
}).placeAt("container").startup();
在这里看到:http://jsfiddle.net/k63h12ux/2/
如果您不希望标签进行排序,添加sortByLabel: false
。这也将解决这个问题。
new Select({
store: new MemoryStore({ data: g_data(), getLabel: function(o) {return o.label;} }),
sortByLabel: false,
value: "-999",
onChange: function(v) { document.getElementById("output").innerHTML = "Selected " + v; }
}).placeAt("container").startup();
在这里看到:http://jsfiddle.net/z4w0bx9k/1/
这个问题的原因是周围的dijit.form._FormSelectWidget
following line。如果没有提供labelAttr
且默认值sortByLabel
设置为true
,则来自商店的物品将使用错误的条件进行存储,因此会给出错误的顺序。
var labelAttr = this.labelAttr;
items.sort(function(a, b){
return a[labelAttr] > b[labelAttr] ? 1 : b[labelAttr] > a[labelAttr] ? -1 : 0;
});
从dijit.form._FormSelectWidget
文档,它也说:
如果
store
设置,labelAttr必须设置也一样,除非店是一个老风格 dojo.data存储,而不是一个新的道场/商店。
感谢您的答案,其实labelAttr:“标签”, 值:“-999”,sortByLabel:false,这三行代码修复了我的问题。 – user1516871 2014-12-09 05:10:27
我认为你必须分享一些代码才能获得更多帮助。你在这个例子中看到了相同的行为吗? http://jsfiddle.net/froden/oqjym25f/ – Frode 2014-12-03 14:29:25