Fox框架-工具篇
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");
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);
}
})
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","榴莲");
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);
});