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