Wijmo DataSoruce
综述:
Wijdatasource 类被用于给 wijwidgets 提供数据。Wijdatasource 需要配合 datareader 和 proxy 使用。Wijdatasource 类、datareader 类和 proxy 类在 jquery.wijmo.wijdatasource.js 文件中实现。
1.下面分别提供显示前端和后端数据的例子:
显示前端数据
可以使用以下代码去读取前端数据:
- // array to read
- var testArray = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];
- // create datareader of array
- var myReader = new wijarrayreader([{name: 'label'}, {name: 'value'}, {name: 'selected',defaultValue: false}]);
- // create datasource
- var datasource = new wijdatasource({
- reader: myReader,
- data: testArray,
- loaded: function (data){
- // get items by data.items
- var items = data.items;
- }
- });
- // load datasource, loaded event will be fired after loading.
- datasource.load();
复制代码
显示后台数据:
可以使用以下代码去读取后台数据
- // define a proxy
- var proxy = new wijhttpproxy({
- url: "http://ws.geonames.org/searchJSON",
- dataType: "jsonp",
- data: {
- featureClass: "P",
- style: "full",
- maxRows: 12,
- name_startsWith: 'ab'
- },
- key: 'geonames'
- });
- // define a reader
- var myReader = new wijarrayreader([
- {
- name: 'label',
- mapping: function (item){
- return item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName
- }
- },
- {name: 'value',mapping: 'name'}]);
- // create datasource
- var datasource = new wijdatasource({
- reader: myReader,
- proxy: proxy,
- loaded: function (data){
- // read items.
- var items = data.items;
- }
- });
- // trigger load.
- datasource.load();
复制代码
2.依赖关系
Wijmo 插件有时会依赖于其他文件,例如 JavaScript 和 CSS 文件。使用Wijdatasource 我们需要添加一下引用:
<script src="jquery-1.7.1.js" type="text/javascript"></script>
3.字段
data:
wijdatasource 处理的数据集
Type:Object
Default:null
例子:
- var datasource = new wijdatasource({
- reader: myReader,
- data: testArray,
- loaded: function (data){
- // get items by data.items
- var items = data.items;
- }
- });
复制代码
proxy :
wijdatasource 的 proxy。wijdatasource 会调用 proxy 字段的 request 方法。在 proxy 字段中,你可以发送 request 到远程服务器来获得 data,这种方式是无刷新的 Ajax 模式。之后我们就可以通过wijdatasource 的reader 来处理返回的纯数据了。
Type:Object
Default:null
示例:
- // create datasource
- var datasource = new wijdatasource({
- reader: myReader,
- proxy: proxy,
- loaded: function (data){
- // read items.
- var items = data.items;
- }
- });
复制代码 Reader:
Wijdatasource 使用 的reader。Wijdatasource 使用 reader 的read方法从Array中读取原始数据。Field 包含 name,mapping,和默认值 defaultValue 属性 which define the rule of mapping.如果 Wijdatasource 下没有定义 reader,就直接返回原始数据。
Type:Object
Default:null
示例:
- var datasource = new wijdatasource({
- reader: myReader,
- data: testArray,
- loaded: function (data){
- // get items by data.items
- var items = data.items;
- }
- });
复制代码
4.事件:
Loaded:
Wijdatasource 在加载数据结束时触发该事件
参数:
? Datasource:触发该事件的 wijdatasource 。
? Data:load 方法传递来的数据。
示例:
- var datasource = new wijdatasource({loaded: function(e, data) { }})
复制代码 loading:
Wijdatasource 在加载数据之前触发该事件
? Datasource:触发该事件的 wijdatasource 。
? Data:load 方法传递来的数据。
5.方法:
Load
Load(data,forceLocalReload)
触发Wijdatasource 的加载数据。
参数:
? data:传递给 Loading 和Loaded 事件的数据。
? forceLocalReload:正常情况下,数据值加载一遍,如果你需要反复加载数据,需要设置forceLocalReload 为 true。
示例:
- var datasource = new wijdatasource({
- reader: myReader,
- proxy: proxy,
- loaded: function (data){
- // read items.
- var items = data.items;
- }
- });
- // trigger loading without parameters.
- datasource.load();
复制代码
read
触发Wijdatasource 下 DataReader 的数据读取过程,如果存在 DataReader 的话。
示例:
- var datasource = new wijdatasource({
- reader: myReader,
- data: testArray
- });
- // trigger reading.
- datasource.read();
- //get the result
- var mappingData = datasource.items;
复制代码 属性:
Items
原始数据的容器。在数据加载之后可以获得该属性。
Type:Array
Default:[]
示例:
- var datasource = new wijdatasource({
- reader: myReader,
- proxy: proxy,
- loaded: function (data){
- // read items.
- var items = data.items;
- }
- });
- // trigger loading.
- datasource.load();
复制代码 |
|