诛仙手游70真仙10属性:深入了解Dojo Data - Dojo中文博客 - CSDN博客

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 21:27:52
深入了解Dojo Data 收藏
深入了解Dojo Data
——译自http://www.sitepen.com/blog/2010/10/13/dive-into-dojo-data/使用Dojo Data有助于快速创建Web应用的界面,且易于嵌入各种数据源。它在用户界面与底层数据之间提供了一层抽象层,使得用户界面开发人员能够专注于UI的开发,而无需担心数据库、服务器、或者数据格式的唯一性。在接下来的例子里,我们将用一个JsonRestStore为DataGrid提供数据。然后,我们将用一个XmlStore替换这个JsonRestStore,以显示UI和数据源的解耦所带来的便利。数据以JSON的方式表示:view plaincopy to clipboardprint?
01.dataItems = [  
02.    { "id": "AF", "name":"Africa", "type":"continent",  
03.      "population":"900 million", "area": "30,221,532 sq km" },  
04.    { "id": "AS", "name":"Asia", "type":"continent",  
05.      "population":"1 billion", "area": "25,428,192 sq km" },  
06.    { "id": "OC", "name":"Oceania", "type":"continent",  
07.      "population":"21 million", "area": "15,928,294 sq km" },  
08.    { "id": "EU", "name":"Europe", "type":"continent",  
09.      "population":"56 million", "area": "25,928,294 sq km" },  
10.    { "id": "NA", "name":"North America", "type":"continent",  
11.      "population":"100 million", "area": "90,928,294 sq km" },  
12.    { "id": "SA", "name":"South America", "type":"continent",  
13.      "population":"102 million", "area": "78,928,294 sq km" },  
14.    { "id": "AN", "name":"Antarctica", "type":"continent",  
15.      "population":"998", "area": "102,928,294 sq km" }  
16.]; 
dataItems = [
    { "id": "AF", "name":"Africa", "type":"continent",
      "population":"900 million", "area": "30,221,532 sq km" },
    { "id": "AS", "name":"Asia", "type":"continent",
      "population":"1 billion", "area": "25,428,192 sq km" },
    { "id": "OC", "name":"Oceania", "type":"continent",
      "population":"21 million", "area": "15,928,294 sq km" },
    { "id": "EU", "name":"Europe", "type":"continent",
      "population":"56 million", "area": "25,928,294 sq km" },
    { "id": "NA", "name":"North America", "type":"continent",
      "population":"100 million", "area": "90,928,294 sq km" },
    { "id": "SA", "name":"South America", "type":"continent",
      "population":"102 million", "area": "78,928,294 sq km" },
    { "id": "AN", "name":"Antarctica", "type":"continent",
      "population":"998", "area": "102,928,294 sq km" }
];
小提示:可以到jsonlint.org 验证JSON格式的正确性。JsonRestStore需要与一个数据服务相连。本例中我们只创建一个模拟服务。注意为了简单起见,我们将省略"query"这个参数,返回所有的数据项。view plaincopy to clipboardprint?
01.var mockService = function(query){  
02.        var d = new dojo.Deferred();  
03.        d.fullLength = dataItems.length;  
04.        d.callback(dataItems);  
05.        return d;  
06.}; 
var mockService = function(query){
        var d = new dojo.Deferred();
        d.fullLength = dataItems.length;
        d.callback(dataItems);
        return d;
};下一步,我们用一个服务函数和一个目标URL来创建JsonRestStore。同样,对于这个例子而言我们将省略"target"参数。这个残水对于今后开发真正的REST服务非常重要,但现在暂时不需要。view plaincopy to clipboardprint?
01.jsonStore = new dojox.data.JsonRestStore({  
02.        service: mockService,  
03.        target: ‘/some/url’  
04.}); 
jsonStore = new dojox.data.JsonRestStore({
        service: mockService,
        target: ‘/some/url’
}); JsonRestStore适用于比较大型的数据集。对于这种数据集,你往往不想(或根本不可能)高效地将其完全传送到客户端。JsonRestStore能够很好地处理与服务器端的交互。最后,我们来声明一个dojox.grid.DataGrid。我们将用它显示数据。view plaincopy to clipboardprint?
01. 
02.     
03.         
04.             
05.             
06.             
07.         
08.     
09.
NamePopulationArea
 

   
       
           
           
           
       
   
NamePopulationArea

 
同样的JsonRestStore也能够同时为一个dijit.form.ComboBox提供数据:view plaincopy to clipboardprint?
01. 

 
看,把同一份数据用于不同的UI小部件就是这么简单!接下来,我们用一个XmlStore来换下这个JsonRestStore,看看转换数据格式有多简单。数据文件如下:view plaincopy to clipboardprint?
01. 
02.         
03.                Africa 
04.                900 million 
05.                30,221,532 sq km 
06.       
 
07.         
08.                Asia 
09.                1 billion 
10.                25,428,192 sq km 
11.       
 
12.         
13.                Oceania 
14.                21 million 
15.                15,928,294 sq km 
16.       
 
17.         
18.                Europe 
19.                56 million 
20.                25,928,294 sq km 
21.       
 
22.         
23.                North America 
24.                100 million 
25.                90,928,294 sq km 
26.       
 
27.         
28.                South America 
29.                102 million 
30.                78,928,294 sq km 
31.       
 
32.         
33.                Antarctica 
34.                998 
35.                102,928,294 sq km 
36.       
 
37.
 

       
                Africa
                900 million
                30,221,532 sq km
       

       
                Asia
                1 billion
                25,428,192 sq km
       

       
                Oceania
                21 million
                15,928,294 sq km
       

       
                Europe
                56 million
                25,928,294 sq km
       

       
                North America
                100 million
                90,928,294 sq km
       

       
                South America
                102 million
                78,928,294 sq km
       

       
                Antarctica
                998
                102,928,294 sq km
       

然后,创建XML数据存储器:view plaincopy to clipboardprint?
01.xmlStore = new dojox.data.XmlStore({  
02.        url: ‘continents.xml’,  
03.        label: ‘name’  
04.}); 
xmlStore = new dojox.data.XmlStore({
        url: ‘continents.xml’,
        label: ‘name’
});XmlStore是一个客户端的数据存储器,用于读取XML数据源。它由Dojo官方提供并包含在DojoX子项目中。XmlStore为基本的XML数据(一种常用的数据交换格式)提供读/写接口。XmlStore可以用于一般的XML文档,因此非常有用。存储器的设计是你可以通过覆盖其部分方法来自定义读/写数据的行为。最后,将它交给DataGrid。view plaincopy to clipboardprint?
01. 
02.         
03.                 
04.                         
05.                         
06.                         
07.                 
08.         
09.
NamePopulationArea
 

       
               
                       
                       
                       
               
       
NamePopulationArea
同时,更新ComboBox:view plaincopy to clipboardprint?
01. 
我们不需要修改关于Grid和ComboBox的任何代码,就能让它们继续工作。唯一需要做的改动,就是声明一个数据源,并将它设置为grid的输入。我们不需要操心任何关于数据获取、解析、以及管理的事情,数据存储器的API做了所有的工作!除此之外还有其他许多有用的数据存储器,包括CsvStore,FileStore,FlickrStore,JsonQueryRestStore,PersevereStore,ServiceStore,WikipediaStore,等等。如果需要一个完整列表,请参见dojox.data目录Dojo Data是一个强大而灵活的工具。数据存储器使得切换前端组件和后端实现都变得很容易,不需要改变许多代码。因此我们可以为同一个数据存储器很方便地更换前端Diji部件,另外,同一个数据存储器也能由页面上的多个Dijit部件、图表或grid同时使用。更多相关资源:•RESTful JSON + Dojo Data
•Easy Exploration of Dojo Data Stores
•Web Service to dojo.data Store in 4 Easy Steps
发表于 @ 2010年11月08日 20:16:00 | 评论( 0 ) | 编辑| 举报| 收藏 旧一篇:部分Dojo常用函数简介(五)——事件处理以及Ajax I/O函数扩展 | 新一篇:JavaScript 开发测试工具概览
查看最新精华文章 请访问博客首页相关文章发表评论表 情:          评论内容: 用 户 名:登录 注册 匿名评论 匿名用户验 证 码:  重新获得验证码
  热门招聘职位荷兰互联网公司诚聘Web(Rails)开发工程师【重庆大龙网】高薪诚聘中高级软件工程师美资高薪诚聘软件开发及数据库人才【新迪数字】高薪诚聘JAVA项目软件架构师、JAVA项目主管!!【尚品网】诚招软件开发工程师【UniQlick】【8K-12K】急招Java工程师、技术工程师、数据分析师【 CSDN】高薪诚聘:java、运营、就业、商务策划经理、网站编辑!【武汉亨通科技】高薪诚聘项目经理、高级软件工程师,邀您加盟!【careerfocus】科锐福克斯猎头公司强悍猎聘IT人才!【沃尔玛中国】信息系统部急聘IT英才(上海,深圳)!!!【融资城】投融资平台高薪诚聘技术总监、产品经理等【搜狐公司】海量技术职位火热招聘中!荷兰互联网公司诚聘Web(Rails)开发工程师【重庆大龙网】高薪诚聘中高级软件工程师美资高薪诚聘软件开发及数据库人才【新迪数字】高薪诚聘JAVA项目软件架构师、JAVA项目主管!!【尚品网】诚招软件开发工程师【UniQlick】【8K-12K】急招Java工程师、技术工程师、数据分析师【 CSDN】高薪诚聘:java、运营、就业、商务策划经理、网站编辑!【武汉亨通科技】高薪诚聘项目经理、高级软件工程师,邀您加盟!【careerfocus】科锐福克斯猎头公司强悍猎聘IT人才!【沃尔玛中国】信息系统部急聘IT英才(上海,深圳)!!!【融资城】投融资平台高薪诚聘技术总监、产品经理等【搜狐公司】海量技术职位火热招聘中! 公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告
北京创新乐知信息技术有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
 Email:webmaster@csdn.net
Copyright © 1999-2010, CSDN.NET, All Rights Reserved
 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dojotoolkit/archive/2010/11/08/5996121.aspx