What is the best way to populate the combobox dojo (1.8) programmatically?
http://stackoverflow.com/questions/12360885/what-is-the-best-way-to-populate-the-combobox-dojo-1-8-programmatically
by phusick
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.3/dijit/themes/claro/claro.css">
<script src="https://cdn.rawgit.com/phusick/cdn/jsfiddle/amd-packages.js"></script>
<div class="row">
<label for="comboBox1Placeholder">
JsonRest:
</label>
<div id="comboBox1Placeholder"></div>
</div>
<div class="row">
<label for="comboBox2Placeholder">
Memory:
</label>
<div id="comboBox2Placeholder"></div>
</div>
CSS
body {
font-family: sans-serif;
padding: 30px;
}
label {
display: inline-block;
width: 100px;
text-align: right;
}
.row {
margin-bottom: 4px;
}
JavaScript
require([
"dojo/_base/declare",
"dojo/_base/array",
"dojo/json",
"dojo/store/Memory",
"dojo/store/JsonRest",
"dijit/form/ComboBox",
"data/dtuned",
"http://sinonjs.org/releases/sinon-1.4.2.js",
"dojo/domReady!"
], function(
declare,
array,
JSON,
Memory,
JsonRest,
ComboBox,
data
) {
/**
* Creates a fake REST server via sinon.js
*/
function setUpServer() {
var server = sinon.fakeServer.create();
server.autoRespond = true;
var allDataResponse = [
200,
{ "Content-Type": "application/json" },
JSON.stringify(data.items)
];
server.respondWith("GET", "/song/", allDataResponse);
server.respondWith("GET", "/song/?Name=*", allDataResponse);
server.respondWith(/\/song\/\?Name=(.+)\*/, function(xhr, search) {
console.log("JsonRest:", xhr.url);
search = unescape(search);
var response = [];
var re = new RegExp("^" + search + "(\w*)", "i");
response = array.filter(data.items, function(item, index) {
return (re.exec(item.Name) !== null);
});
xhr.respond(
200,
{ "Content-Type": "application/json" },
JSON.stringify(response)
);
});
}
setUpServer();
var memoryStore = new Memory({ idProperty: "Key" });
var restStore = new JsonRest({
target: "/song/",
idProperty: "Key"
});
var comboBox1 = new ComboBox({
store: restStore,
searchAttr: "Name",
autocomplete: true,
placeholder: "Select your favorite song."
}, "comboBox1Placeholder");
comboBox1.startup();
var comboBox2 = new ComboBox({
store: memoryStore,
searchAttr: "Name",
autocomplete: true,
placeholder:...