Fox框架-工具篇

1 数据篮子

fox.bus  

fox框架提供了一个数据存储结构为树状结构的数据篮子,分别提供数据存储、数据获取、数据修改和数据删除的接口

API

l  put     增加数据

l  get     获取数据

l  remove   删除数据

例子

//1.数据储存

//一层
var data = {
    id: "01",
    name: "
一层数据"
}
//
保存数据
fox.bus.put("level", data);

//
二层
var data2 = {
    id: "02",
    name: "
二层数据"
}
//
保存数据
fox.bus.put("level", "level-2-1", data2);

//
三层
var data3 = {
    id: "03",
    name: "
三层数据"
}
//
保存数据
fox.bus.put("level", "level-2-2", "level-3", data3);

 

//2.数据获取

var data = fox.bus.get("level");
alert("
一层数据:" + JSON.stringify(data));

var data2 = fox.bus.get("level", "level-2-1");
alert("
二层数据:" + JSON.stringify(data2));

var data3 = fox.bus.get("level", "level-2-2", "level-3");
alert("
三层数据:" + JSON.stringify(data3))

 

//3数据修改

var n=0;

n++;
var data = fox.bus.get("level");
data.name = data.name + ",
修改次数:" + n;

var data2 = fox.bus.get("level", "level-2-1");
data2.name = data2.name + ",
修改次数:" + n;

var data3 = fox.bus.get("level", "level-2-2", "level-3");
data3.name = data3.name + ",
修改次数:" + n;

 

 

//4数据删除

fox.bus.remove("level");

 

 

2 事件链路

fox.EventChain

fox框架提供了一个可以让异步事件同步顺序执行的工具类

API

l  post    把待执行数据加入事件链路

l  wait    等待事件链路中的事件执行完成

l  fire    触发下事件链路中的下一个事件执行,如果链路中已经没有事件则执行wait函数

l  reject  中断事件链路中的事件执行,直接执行wait函数

 

例子

//定义事件调用链路
var eventChain = new fox.EventChain();

//
链路调用
eventChain.post(function () {
    //
请求服务step 1
    fox.service.request({
        id: "pages_demo_eventchain",
        name: "trade/demo/stepService",
        data: {
            step: 1,
            sign: ''
        },
        callback: function (code, msg, data) {

            if (code == 0) {
                var resData = data["nextStep"];
                //
成功,并调用到下一个节点
                msg = "step-1";
                eventChain.fire(code, msg, resData);
            } else {
                //
失败,直接调用wait callback
                eventChain.reject(code, msg, data);
            }
        }
    });
}).post(function (preCode, preMsg, preData) {
    var msg = preMsg + " step-2";
    var nextStep = preData + 1;
    //
成功,并调用到下一个节点
    eventChain.fire(msg, nextStep);

}).post(function (preMsg, preData) {
    var step = preData;
    //
请求服务step 1
    fox.service.request({
        id: "pages_demo_eventchain",
        name: "trade/demo/stepService",
        data: {
            step: step
        },
        callback: function (code, msg, data) {

            if (code == 0) {
                var resData = data["nextStep"];
                //
成功,并调用到下一个节点
                var message = preMsg + " step-3";
                eventChain.fire(code, message, resData);
            } else {
                //
失败,直接调用wait callback
                eventChain.reject(code, msg, data);
            }
        }
    });
})

//
继续加入调用链路
eventChain.post(function (preCode, preMsg, preData) {
    var step = preData;
    //
请求服务step 1
    fox.service.request({
        id: "pages_demo_eventchain",
        name: "trade/demo/stepService",
        data: {
            step: step
        },
        callback: function (code, msg, data) {
            if (code == 0) {
                var resData = data["nextStep"];
                var message = preMsg + " step-4";
                //
成功,并调用到下一个节点
                eventChain.fire(code, message, resData);
            } else {
                //
失败,直接调用wait callback
                eventChain.reject(code, msg, data);
            }
        }
    });

}).wait(function (preCode, preMsg, preData) {
    if (preCode == 0) {
        success = true;
        console.info(preMsg);
        fox.layer.close(layerIndex);

        //
调用提交
        submit();
    } else {
        fox.layer.open("
失败了,原因:" + preMsg);
    }
})

 

 

3 事件代理

fox.EventProxy

fox框架提供了一个观察者/订阅者模式的工具类

API

l  bind      绑定事件

l  unbind    解除绑定

l  once      绑定只触发一次的函数

l  all       绑定多条件触发函数

l  trigger   触发事件

 

例子

//创建event proxy
var ep=new fox.EventProxy();
//
绑定事件
ep
.bind("hi",function(name){
    alert("hi,"+name);
});
//
触发事件
ep
.trigger("hi","jc");
ep.trigger("hi","yxt");
//
绑定多条件事件
ep
.all("love","food",function(name,data){
    alert(name+"
喜欢吃"+data);

});
//
触发多条件事件
ep
.trigger("love","yxt");
ep.trigger("food","
榴莲");

 

 

 

4 Base64工具

fox.base64

fox框架提供了一个base解码/编码的工具类

API

l  encode     base64编码

l  decode     base64解码

 

例子

//编码
fox.$("#encrypt").click(function () {
    var text = fox.$("#content").val();
    text=fox.base64.encode(text);
    fox.$("#content").val(text);
});

//
解码
fox.$("#decrypt").click(function () {
    var text = fox.$("#content").val();
    alert(text);
    text=fox.base64.decode(text);
    fox.$("#content").val(text);
});