文档章节

Dojo 基础入门(四)

w
 waking999
发布于 2017/05/24 13:32
字数 906
阅读 1
收藏 0
点赞 0
评论 0

1.            数据

1.1.    了解dojo.data

dojo.data提供了封装的标准的数据存取API,作为统一的数据访问层而存在。所有的数据都是item或者item的属性。Dojo.data提供了一个基本的ItemFileReadStore类来读取JSON格式数据,而dojox提供了更多扩展,比如XmlStore,  CsvStore, OpmlStore等,我们也可以自定义自己的store类型。

dojo.data的操作都是异步的,可以不刷新页面而取回数据。

1.2.    dojo.data的一些术语与传统数据库的对比

dojo.data

传统数据库

备注

data source

数据库

 

datastore

 

item

行记录

 

attribute

 

reference

 

有些类似外键依赖,但外键指向的父记录,而reference指向子记录的列表

identity

主键

 

query

Where条件子句

从目前看,语法不如Where条件子句丰富,只支持and,不支持or

 

 

1.3.    JSON

 

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于Javascript标准的一个子集,JavaScriptd的数据结构(如字符串、数组、对象)的表示方式恰好与JSON相同,所以JSON可以被Javascript无损的识别。它是一种简单文本格式,与XML相比,它更加易读、更少的数据冗余。

一段典型的JSON格式数据形如:

{ identifier: 'name',
   items: [
        { name: 'Adobo', aisle: 'Mexican' },
        { name: 'Balsamic vinegar', aisle: 'Condiments' },
        { name: 'Basil', aisle: 'Spices' },
        { name: 'Bay leaf', aisle: 'Spices' },
        { name: 'Beef Bouillon Granules', aisle: 'Soup' },
        { name: 'Vinegar', aisle: 'Condiments' },
        { name: 'White cooking wine', aisle: 'Condiments' },
        { name: 'Worcestershire Sauce', aisle: 'Condiments' }]

}

假设该段数据存放于pantry_spices.json文件,相应的Dojo datastore的声明和使用如下:

 

<div dojoType="dojo.data.ItemFileReadStore" jsId="pantryStore"
        url="pantry_items.json"></div><!-(1)-->
<div
     name="pantry_item" dojoType="dijit.form.FilteringSelect"
     store="pantryStore"
     searchAttr="name" value="Vinegar" autoComplete="true"
></div><!-(2)-->

 

(1)  指明了datastore的类型是dojo.data.ItemFileReadStore;数据的url,请注意这里除了可以是文件路径,也可以是一段请求得到的流;以及该datastorejsId

(2)  这里声明了dojoTypedijit.form.FilteringSelect的一个组件,该组件在html页面上展现形式为一个下拉框,需要有数据填充,其中store属性指向了jsIdpantryStore的一个datastore,由此把刚刚在(1)处定义的datastore的数据关联了起来。

1.4.    datastore的读取

var pantryStore = new dojo.data.ItemFileReadStore({url: "pantry_items.json" } ); //(1)

var gotList = function(items, request){ //(2)
    var itemsList = "";
    for (var i = 0; i < items.length; i++){
       itemsList += pantryStore .getValue(items[i], "name") + " "; //(3)
    }
    alert("All items are: " + itemsList);
}
var gotError = function(error, request){ //(4)
    alert("The request to the store failed. " +  error);
}

pantryStore.fetch({onComplete: gotList, onError: gotError,query:{name:”*”}}); //(5)

 

(1)  此处用编程实现方式定义了一个datastore,在这里是dojo.data.ItemFileReadStore,其实还可以是其它的datastore类型,如XmlStore,CsvStore等,甚至可以是自定义的datastore类型。

(2)  自定义函数,为fetch函数做准备,用于数据处理。

(3)  getValue函数,它是由dojo.data封装的API,用于得到某个item的某个属性名称的值。具体可参考Dojo API说明。

(4)  自定义函数,为fetch函数做准备,用于异常处理。

(5)  执行数据查询的语句,需要传入一些查询选项,比如在示例中出现的:

onComplete:在得到所有符合条件的数据后的处理函数,参数为item的列表;

onError:出现异常的处理函数;

query: 查询条件,是一个Object类型,形如{ name: '?hite*', aisle: 'Condiments' },”,”表示条件的and关系,通配符”?”,”*”表示一个或多个字符(包含0个);

此外,还有
queryOptions:
查询选项,指明是否忽略大小写或是否深度查找item的子;
onBegin:
在查询前的处理函数;
onItem:
在遇到符合条件的每一个item时的处理函数;
等。

还有一些其他的选项,具体可参考Dojo API说明。

 

 

本文转载自:http://blog.csdn.net/kswaking/article/details/2232676

共有 人打赏支持
w
粉丝 0
博文 23
码字总数 0
作品 0
澳大利亚
Dojo入门与dojo项目配置方案(一)

何为dojo Toolkit Dojo Toolkit(以下简称dojo)是一个javascript语言实现的、跨浏览器的DHTML(Dynamic HTML)工具包。Dojo ToolKit包括了构建大规模Ajax驱动的web应用程序所需要的一切。所...

tkorays ⋅ 2014/01/01 ⋅ 0

Dojo Mobile 1.7 入门

最新版的移动 Web 开发框架 Dojo Mobile 1.7,是 Dojo Toolkit 的一个扩展。本文将使您了解如何从主干网址下载 Dojo 1.7,以及如何在您的应用程序中使用 Dojo Mobile。您还将探索它提供的各种...

IBMdW ⋅ 2012/12/18 ⋅ 8

深入浅出 Javascript API(四)--绘制 Graphics

Graphics绘制是webgis基本编辑功能之一,基于Javascript API进行开发很容易联想到其基础功能的提供者--Dojo,point、multipoint、polyline、polygon等基本图形可以很方便的在地图上绘制出来,...

文艺小青年 ⋅ 2017/03/02 ⋅ 0

深入浅出 Javascript API(一)--基本框架

Javascript API是ArcGIS Server 9.3新增的一套API框架,为创建WebGIS应用提供了轻量级的解决方法,在客户端利用ags所提供的服务,就能实现地图应用和地理功能。 还记得ArcIMS Blueviewer示例...

文艺小青年 ⋅ 2017/03/02 ⋅ 0

Dojo 与 jQuery 综合比较分析

最近Dojo 和jQuery双双发布了最新的1.8版本,有着相同版本号的两个Javascript库也有许多核心的相同之处:相同的资源加载机制AMD、相同的选择 器 引擎Sizzle等。作为业界知名的Javascript库,...

鉴客 ⋅ 2012/07/09 ⋅ 21

手把手教你Dojo入门

如果仅仅是为了练习Dojo,或者进行测试,可以参考下面的步骤。下面的文件均是在Windows下测试 需要的工具 1 Tomcat服务器:下载地址 选择适合自己的机器型号,即可 2 Dojo的工具包:下载地址 ...

青夜之衫 ⋅ 2017/12/04 ⋅ 0

在 Node.js 上使用 Dojo

简介: Node.js 让服务器端和客户端的编程语言得到了统一,而 Dojo 则让开发框架得到了统一。得益于优良的架构,Dojo 能同时在服务器端和客户端运行,从而让 Web 开发人员用同一种语言,同一...

IBMdW ⋅ 2012/03/15 ⋅ 0

全面认识 Node.js

1. 了解 Node.js 从 Java 开发人员的视角了解什么是 Node.js(什么不是 Node.js),以及其工作原理和益处。然后,看看使用 Node 开发的 Web 应用程序是什么样的。 阅读: 面向 Java 开发人员的...

IBMdW ⋅ 2012/09/17 ⋅ 1

Dojo入门与dojo项目配置方案(二)

用了一段时间dojo后,渐渐发现它的强大。越来越喜欢它的一个函数是declare。Declare可以用来创建自定义类,以实现模块化设计。正是这种模块化的思想让dojo开发变得简便。这里面我介绍一个doj...

tkorays ⋅ 2014/01/05 ⋅ 0

Dojo学习2 dojo快速安装

dojo快速安装 一共四步: 1、从官方网站(http://dojotoolkit.org/downloads)或者本站(http://www.dojocn.cn/u/dojo-0.9.0beta.tar.gz)下载最新版本的dojo 2、在你的服务器文件系统中,创建...

元来元去 ⋅ 2010/11/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 12分钟前 ⋅ 1

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。 14.2 NFS服务...

lgsxp ⋅ 21分钟前 ⋅ 0

Day18 vim编辑模式、命令模式与练习

编辑模式 命令模式 :nohl 不高亮显示 :x与:wq类似,如果在更改文件之后操作,两者效果一样;如果打开文件,没有任何操作; :wq会更改mtime,但是:x不会。 练习题 扩展 vim的特殊用法 ht...

杉下 ⋅ 24分钟前 ⋅ 0

Enum、EnumMap、EnumSet

1、Enum 不带参数 public enum Car { AUDI { @Override public int getPrice() { return 25000; } }, MERCEDES { ......

职业搬砖20年 ⋅ 25分钟前 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 26分钟前 ⋅ 0

线程组和 ThreadLocal

前言 在上面文章中,我们从源码的角度上解析了一下线程池,并且从其 execute 方法开始把线程池中的相关执行流程过了一遍。那么接下来,我们来看一个新的关于线程的知识点:线程组。 线程组 ...

猴亮屏 ⋅ 27分钟前 ⋅ 0

相对路径和绝对路径

基本概念   文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。在网页设计中通过路径可以表示链接,插入图像、Flash、CSS文件的位置。   物理路径:物理路...

临江仙卜算子 ⋅ 31分钟前 ⋅ 0

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消...

中间件小哥 ⋅ 33分钟前 ⋅ 0

java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁 ⋅ 34分钟前 ⋅ 0

vim编辑模式、vim命令模式

vim编辑模式 使用vim filename 进入的界面是一般模式,在这个模式下虽然我们能够查看,复制,剪切,粘贴,但是不能编辑新的内容,如何能直接写入东西呢?这就需要进入编辑模式了,从一般模式...

李超小牛子 ⋅ 36分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部