数据交互

BUI里面有3种数据交互.

数据请求

bui.ajax(option)

数据请求 bui.ajax API 数据请求的跨域处理,请查看调试章节.

参数: option 是一个对象

option.url

  • Type: string
  • Detail: url地址

option.data

  • Type: object
  • Detail: 请求的参数,默认:{}

option.method

  • Type: string
  • Detail: 默认: GET

示例:

  1. bui.ajax({
  2. url: "",
  3. data: {}
  4. }).then(function(res){
  5. // 成功回调
  6. console.log(res)
  7. },function(res,status){
  8. // 失败回调
  9. console.log(status);
  10. })

还有依赖请求,顺序请求等, 查看更多ajax技巧

模板渲染

这里你熟悉$的jQuery及Dom操作都可以直接在bui.ready里面使用, 工程里面可以支持ES6 的模板.

使用 $ 渲染示例:

这些属于jQuery的基础操作, 更多知识请自行学习.

渲染一个列表:

list.js

  1. // 示例数据,正常由请求返回
  2. var data = [{
  3. name: "hello"
  4. },{
  5. name: "bui"
  6. }];
  7. // 声明列表模板
  8. var templateList = function (data) {
  9. var html = '';
  10. data.forEach(function(el,index){
  11. html += `<li class="bui-btn">${el.name}</li>`;
  12. })
  13. return html;
  14. }
  15. var listTpl = templateList(data);
  16. // $渲染
  17. $("#list").html(listTpl);

list.html

  1. <ul id="list"></ul>

数据存储

bui.storage(option)

bui.storage 是基于 localStoragesessionStorage 封装的, 主要解决两者之间的API统一问题, 并且支持JSON存储, 以及支持限制多少条数据等问题, 常用来做历史记录. 默认返回的是一个数组.

参数: option 是一个对象

option.local

  • Type: boolean
  • Detail: 设置是否为本地存储,默认:true 为localStorage, false 则为 sessionStorage

option.size

  • Type: number
  • Detail: 限制存储多少条数据,默认:1

示例1: 字符存储

  1. // 存储1条数据
  2. var storage = bui.storage();
  3. storage.set("name","hello");
  4. // 第2个会覆盖第1个
  5. storage.set("name","bui");

示例2: 对象存储

  1. // 存储2条json数据
  2. var storage2 = bui.storage({size:2});
  3. // 通过id字段判断数据是否重复,如果有重复的ID,则会替换掉之前的数据
  4. storage2.set("user",{id:"u1",name:"hello"},"id");
  5. storage2.set("user",{id:"u2",name:"bui"},"id");

示例3: 结合示例1,示例2 获取数据

  1. // 获取字符串
  2. var names = storage.get("name");
  3. // names 为数组, 可以通过 names[0] 获取到内容.
  4. console.log(names) // ["bui"]
  5. // 获取对象
  6. var users = storage2.get("user");
  7. // 最后存储的数据在前面
  8. console.log(users) // [{id:"u2",name:"bui"},{id:"u1",name:"hello"}]

注意: bui.storage 不管存什么数据,获取到的内容都在一个数组里面.

如果想要取到存进去的值, 可以这样

  1. // 获取第一个值
  2. var name = storage.get("name",0);
  3. console.log(name) // "bui"