Dojo.data是一种类似于JDBC的API规范,dojo.data驱动实现了这些规范,并且负责响应那些来自于数据小部件的请求。一般来讲,每个驱动程序负责一种不同的数据提供者格式,例如JSON或者XML。
先大致介绍下数据驱动中的ItemFileReadStore:
这个stroe可以使用HTTP读取json格式的内容,或者从内存中读取js对象,并把所有items都存储在内存中。
其中identifier是用来一标识一个item的。有时会出现label属性,它是用来标识我们需要看到的那个item的属性值的。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>mixin</title>
<meta name="author" content="zhou" />
<script src= "dojo16/dojo/dojo.js" data-dojo-config="isDebug: true, async: true,parseOnload:true"></script>
<script src = "mixin.js"></script>
</head>
<body>
<button dojoType="dijit.form.Button" onclick="getData();">
获取数据
</button>
<br/>
<br/>
<div id="dataOutput">
</div>
</body>
</html>
dojo.require("dojo.data.ItemFileReadStore"); var countryStore = new dojo.data.ItemFileReadStore({ url : "abc.json" }); //onComplete的事件处理程序,将取出来的数据(items)放到dojo.byId("dataOutput")中去 var gotContinents = function(items, request) { var buffer = ["<b>获取的数据:</b>"]; for(var i = 0; i < items.length; i++) { var item = items[i]; buffer.push(countryStore.getLabel(item)); } //这里简单地将取出来的items的label连接在一起 dojo.byId("dataOutput").innerHTML = buffer.join("<br/>"); } function getData(query) { countryStore.fetch({ query : {name : "*"}, onComplete : gotContinents }); };
{
"identifier": "name",
"label":"name",
"items": [
{ "name": "Bob", "spouse": {"_reference":"Sally"}, "children": [ { "_reference":"Nancy"}]},
{ "name": "Sally", "spouse": {"_reference":"Bob"}, "children": [ { "_reference":"Nancy"}]},
{ "name": "Nancy"},
]
}