我正在使用dojo并希望从dataStore填充一个dijit.form.select小部件(此工作原理)。 每当我在select-widget中做出选择时,我应该读取dataStore中的其他字段,然后将其显示在页面上的文本框中。dojo dijit.form.select:从dataStore获取数据?
不幸的是我不知道如何从我的数据存储中读取其他字段。这里是我的代码:如果您滚动一路下跌
重要的事情发生。
这里是JavaScript对象,然后将其读入的数据存储:
var jsonData = {"identifier":"name",
"label": "subject_main",
"items": [
{"name":"departure", "subject_main":"123", "subject_1":"sub1", "subject_2":"sub2"},
{"name":"direct", "subject_main":"456", "subject_1":"sub1", "subject_2":"sub2"},
{"name":"Messaging", "subject_main":"789", "subject_1":"sub1", "subject_2":"sub2"},
{"name":"exchange", "subject_main":"1011", "subject_1":"sub1", "subject_2":"sub2"},
{"name":"Zilo", "subject_main":"1213", "subject_1":"sub1", "subject_2":"sub2"},
{"name":"Stub_implementation", "subject_main":"1415", "subject_1":"sub1", "subject_2":"sub2"},
{"name":"Standard_implementation", "subject_main":"1617", "subject_1":"sub1", "subject_2":"sub2"}
]};
</script>
对于前当我选择 “名”: “信息”, “subject_main”: “789”, “subject_1”:“sub1”,“subject_2”:“sub2”
消息应显示在我的dijit中。
编辑:卢西恩帮了我很多!这是我对这个问题的最终解决方案:
<title>Hello Dijit!</title> <!-- load Dojo --> <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.8.1/dijit/themes/claro/claro.css"> <script src="//ajax.googleapis.com/ajax/libs/dojo/1.8.1/dojo/dojo.js"
数据道场-配置= “isDebug:真,异步:真,parseOnLoad: 真正”>
Beladeauftrag 地址
Naviga灰><label for="load">Laden am</label><br> <input type="text" value="" data-dojo-type="dijit/form/TextBox" data-dojo-props="trim:true, propercase:true" id="load" /><br> <label for="from">von</label><br> <input type="text" value="" data-dojo-type="dijit/form/TextBox" data-dojo-props="trim:true, propercase:true" id="from" /><br> <label for="till">bis</label><br> <input type="text" value="" data-dojo-type="dijit/form/TextBox" data-dojo-props="trim:true, propercase:true" id="till" /><br> <script> // load requirements for declarative widgets in page content require(["dijit/form/Button", "dojo/parser", "dijit/form/TextBox", "dojo/domReady!", "dojo/data/ItemFileReadStore"]); </script> <br> <br> <h2>WF auswählen</h2> <div id="stateSelect"></div> <script> require(["dijit/form/Select", "dojo/store/Memory", "dojo/json", "dijit/registry" , "dojo/ready"], function(Select, Memory, json, registry, ready) { ready(function(){ var jsonData = {"identifier":"name", "label": "subject_main", "items": [ {"name":"Auftrag 1", "subject_main":"123", "subject_1":"sub1", "subject_2":"sub2"}, {"name":"Auftrag 2", "subject_main":"456",
“SUBJECT_1”: “SUB1”, “subject_2”: “SUB2”} ]};
var store1 = new dojo.data.ItemFileReadStore({ data: jsonData }); // code useless - nut dijit.form.select fanishes without it (??) // create Select widget, populating its options from the store var select = new Select({ name: "WorflowSelect", store: store1, style: "width: 200px;", labelAttr: "name", maxHeight: -1, // tells _HasDropDown to fit menu within viewport myAttr1: "this.get(name)", myAttr2: "subject_2", onChange: function(value){ // get references to widgets adressW=dijit.byId("adress"); loadW=dijit.byId("load"); fromW=dijit.byId("from"); tillW=dijit.byId("till"); adressW.attr("value", "subject_main from js-object"); loadW.attr("value", "subject_1 from js-object"); fromW.attr("value", "subject_2 from js-object"); tillW.attr("value", store1._getItemByIdentity("Auftrag 1").subject_main); } }, "stateSelect"); select.startup(); }); }); </script> </body> </html>
thx为tipp!我找不到关于如何以正确的方式创建数据存储的文档,所以我只是从stackoverflow复制粘贴。 现在我正在生成脚本标记中的数据存储和以下代码: var store1 = new dojo.data.ItemFileReadStore({data:jsonData}); 仍然需要我的主要问题的解决方案:) – RCK69 2013-02-15 12:56:58
你可以做一个新的jsfiddle吗?我看到你使用getElementById来访问输入元素。这些元素是dijit小部件!你不应该那样访问它们!使用myElement = dijit.byId(“idHierRein”);相反!如果你想设置它们的值,请执行myElement.attr(“value”,“wertHierRein”); – 2013-02-15 13:07:52
在生产模式下数据来自您的表单? – 2013-02-15 13:16:19