1. 程式人生 > >dojo Select下拉選單項無法選中的原因與解決

dojo Select下拉選單項無法選中的原因與解決

最近遇到一個奇怪問題,Select+JsonRest實現一個下拉選單功能,下拉選單可以正常顯示,但是有一個選項卻無法選中,總是會跳到第一項。除這個選項外其他選項都可以選中。經過觀察,這個選項對應的選項值是整數0,也就是id為0。嘗試把這項的選項值改為任意非0整數,問題不再出現。可能是dojo select外掛不能正確解析選項值為整數0的情況。

繼續試驗,強制把該項選項值改為字串‘0’,其他項不變,也沒有出現該項無法選中情況。於是,對JsonRest返回值全部進行處理,把選項值從整數型轉為字串型,問題解決。

具體實現程式碼:

function(JsonRest, Select, array, Memory, ObjectStore) {
	var json = new JsonRest({
		target: url
	});
	var ary = [];
	json.query().then(
		function(items) {
			// 處理資料
			array.forEach(items, function(item) {
				var tmp = {
					'typeId': String(item.typeId), // 此處轉換typeId從int->string
					'typeName': item.typeName
				};
				ary.push(tmp);
			});
			var store = new Memory({
				data: ary,
				idProperty: 'typeId'
			});
			var os = new ObjectStore({
				objectStore: store
			});
			var select = new Select({
					name: "selectDemo",
					store: os,
					labelAttr: "typeName",
					value: value,
					style: "width: 180px;"
				},
				"target_DOM_Id"
			);
			select.startup();
		}
	);
});