找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2012-7-16 10:22  /   查看:5545  /  回复:0
Wijmo DataSoruce
综述:
Wijdatasource 类被用于给 wijwidgets 提供数据。Wijdatasource 需要配合 datareader 和 proxy 使用。Wijdatasource 类、datareader 类和 proxy 类在 jquery.wijmo.wijdatasource.js 文件中实现。
1.下面分别提供显示前端和后端数据的例子:
显示前端数据
可以使用以下代码去读取前端数据:
  1. // array to read
  2. var testArray = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];
  3. // create datareader of array
  4. var myReader = new wijarrayreader([{name: 'label'}, {name: 'value'}, {name: 'selected',defaultValue: false}]);
  5. // create datasource
  6. var datasource = new wijdatasource({
  7.     reader: myReader,
  8.     data: testArray,
  9.     loaded: function (data){
  10.                 // get items by data.items
  11.                 var items = data.items;
  12.             }
  13. });
  14. // load datasource, loaded event will be fired after loading.
  15. datasource.load();
复制代码

显示后台数据:
可以使用以下代码去读取后台数据
  1. // define a proxy
  2. var proxy = new wijhttpproxy({
  3.             url: "http://ws.geonames.org/searchJSON",
  4.             dataType: "jsonp",
  5.             data: {
  6.                 featureClass: "P",
  7.                 style: "full",
  8.                 maxRows: 12,
  9.                 name_startsWith: 'ab'
  10.             },
  11.             key: 'geonames'
  12.         });
  13. // define a reader
  14. var myReader = new wijarrayreader([
  15.     {
  16.         name: 'label',
  17.         mapping: function (item){
  18.             return item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName
  19.         }
  20.     },
  21.     {name: 'value',mapping: 'name'}]);
  22. // create datasource
  23. var datasource = new wijdatasource({
  24.     reader: myReader,
  25.     proxy: proxy,
  26.     loaded: function (data){
  27.         // read items.
  28.         var items = data.items;
  29.     }
  30. });
  31. // trigger load.
  32. 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
例子:
  1. var datasource = new wijdatasource({
  2.     reader: myReader,
  3.     data: testArray,
  4.     loaded: function (data){
  5.                 // get items by data.items
  6.                 var items = data.items;
  7.             }
  8. });
复制代码

proxy :
wijdatasource  的 proxy。wijdatasource  会调用 proxy 字段的 request 方法。在 proxy 字段中,你可以发送 request 到远程服务器来获得 data,这种方式是无刷新的 Ajax 模式。之后我们就可以通过wijdatasource  的reader 来处理返回的纯数据了。
Type:Object
Default:null
示例:
  1. // create datasource
  2. var datasource = new wijdatasource({
  3.     reader: myReader,
  4.     proxy: proxy,
  5.     loaded: function (data){
  6.         // read items.
  7.         var items = data.items;
  8.     }
  9. });
复制代码
Reader:
Wijdatasource 使用 的reader。Wijdatasource 使用 reader 的read方法从Array中读取原始数据。Field 包含 name,mapping,和默认值 defaultValue 属性 which define the rule of mapping.如果 Wijdatasource 下没有定义 reader,就直接返回原始数据。
Type:Object
Default:null
示例:
  1. var datasource = new wijdatasource({
  2.     reader: myReader,
  3.     data: testArray,
  4.     loaded: function (data){
  5.                 // get items by data.items
  6.                 var items = data.items;
  7.             }
  8. });
复制代码

4.事件:
Loaded:
Wijdatasource 在加载数据结束时触发该事件
参数:
?        Datasource:触发该事件的 wijdatasource 。
?        Data:load 方法传递来的数据。
示例:
  1. 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。
示例:
  1. var datasource = new wijdatasource({
  2.     reader: myReader,
  3.     proxy: proxy,
  4.     loaded: function (data){
  5.         // read items.
  6.         var items = data.items;
  7.     }
  8. });
  9. // trigger loading without parameters.
  10. datasource.load();
复制代码

read
触发Wijdatasource 下 DataReader 的数据读取过程,如果存在 DataReader 的话。
示例:
  1. var datasource = new wijdatasource({
  2.     reader: myReader,
  3.     data: testArray
  4. });
  5. // trigger reading.
  6. datasource.read();
  7. //get the result
  8. var mappingData = datasource.items;
复制代码
属性:
Items
原始数据的容器。在数据加载之后可以获得该属性。
Type:Array
Default:[]
示例:
  1. var datasource = new wijdatasource({
  2.     reader: myReader,
  3.     proxy: proxy,
  4.     loaded: function (data){
  5.         // read items.
  6.         var items = data.items;
  7.     }
  8. });
  9. // trigger loading.
  10. datasource.load();
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部