0
我想實現一個建議組合框,它顯示了從我自己的web服務(使用restapi和jsonp)獲取的建議。我發現ComboBox.store.root.children
包含建議的數據並編寫下面的代碼。爲了簡單起見,我使用數組而不是從我的服務獲取建議。 與它的問題是它看起來像一個黑客和一些功能無法正常工作。例如,我無法擺脫列表中的「搜索」短語。 你能提出更優雅的解決方案嗎?在dojo的ComboBox中顯示建議的更好方法
<head>
<style type="text/css">
body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
</style>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"
djConfig="parseOnLoad: true">
</script>
<script type="text/javascript">
dojo.require("dijit.form.ComboBox");
</script>
<script type="text/javascript">
dojo.addOnLoad(function() {
var cb = dijit.byId("searchQuery");
var bufToClone = cb.store.root.children[0];
cb.store.root.children[0] = null;
var suggestions = ["AAA", "BBB", "CCC"];
dojo.connect(cb, "onKeyPress", function(event) {
var newval = cb.textbox.value;
dojo.forEach(suggestions, function(entry, i) {
var newVal = dojo.clone(bufToClone);
newVal.value = entry;
newVal.text = entry;
cb.store.root.children[i] = newVal;
});
});
});
</script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css"
/>
</head>
<body class=" claro ">
<select dojoType="dijit.form.ComboBox" id="searchQuery" name="searchQuery" class="sQ">
<option>
Search
</option>
</select>
</body>
號這不是我所需要的,因爲我寫的,我下載從我的web服務的建議,因此我不將它們存儲在一個文件中。 – 2011-05-25 11:17:09
我不確定restapi,jsonp條款。但我的猜測是,即使從restapi或jsonp獲取數據 - 從這些數據源獲取數據後,將這些數據放入ItemFileWriteStore並在組合框中調用啓動。對不起,如果我錯了。 – rajkamal 2011-05-26 05:36:14