大致的伪代码:
// 状态表定义
var statusTable = {
'状态1': {
sizeCode: 1,
headerUrl: '/test1/test2',
bodyUrl: 'about:blank',
showTitle: true,
showBorder: true,
showMin: true,
showMax: false,
showClose: true
},
'状态3': {
sizeCode: 2,
headerUrl: '/test1/test2',
bodyUrl: '/test1/test2',
showTitle: true,
showBorder: true,
showMin: true,
showMax: true,
showClose: true
},
'状态4': {
sizeCode: 3,
headerUrl: '/test1/test2',
bodyUrl: '/test1/test2',
showTitle: true,
showBorder: true,
showMin: true,
showMax: false,
showClose: true
},
'状态2': {
sizeCode: 2,
headerUrl: '/test1/test2',
bodyUrl: '/test1/test2',
showTitle: true,
showBorder: true,
showMin: true,
showMax: false,
showClose: true
}
};
// 当前状态码
var currentStatusCode = '';
// 切换到状态机某个状态
function loadStatus(code){
var status = statusTable[code] || null;
if(!status) return;
// update other status
// 利用 status 做一系列设置。。如显示隐藏按钮等
//
currentStatusCode = code;
}
// 示例函数 foo 和 bar.
// 一个函数是一套自定义的逻辑,定义一个状态轮换表即可实现。
function foo(){
var jumpTable = {
'状态1': '',
'状态2': '状态1',
'状态3': '状态4',
'状态4': ''
};
loadStatus(jumpTable[currentStatusCode] || '');
}
function bar(){
var jumpTable = {
'状态1': '状态2',
'状态2': '',
'状态3': '状态1',
'状态4': '状态3'
};
loadStatus(jumpTable[currentStatusCode] || '');
}
var statusTable = {
'状态1': {
sizeCode: 1,
headerUrl: '/test1/test2',
bodyUrl: 'about:blank',
showTitle: true,
showBorder: true,
showMin: true,
showMax: false,
showClose: true
},
'状态3': {
sizeCode: 2,
headerUrl: '/test1/test2',
bodyUrl: '/test1/test2',
showTitle: true,
showBorder: true,
showMin: true,
showMax: true,
showClose: true
},
'状态4': {
sizeCode: 3,
headerUrl: '/test1/test2',
bodyUrl: '/test1/test2',
showTitle: true,
showBorder: true,
showMin: true,
showMax: false,
showClose: true
},
'状态2': {
sizeCode: 2,
headerUrl: '/test1/test2',
bodyUrl: '/test1/test2',
showTitle: true,
showBorder: true,
showMin: true,
showMax: false,
showClose: true
}
};
// 当前状态码
var currentStatusCode = '';
// 切换到状态机某个状态
function loadStatus(code){
var status = statusTable[code] || null;
if(!status) return;
// update other status
// 利用 status 做一系列设置。。如显示隐藏按钮等
//

currentStatusCode = code;
}
// 示例函数 foo 和 bar.
// 一个函数是一套自定义的逻辑,定义一个状态轮换表即可实现。
function foo(){
var jumpTable = {
'状态1': '',
'状态2': '状态1',
'状态3': '状态4',
'状态4': ''
};
loadStatus(jumpTable[currentStatusCode] || '');
}
function bar(){
var jumpTable = {
'状态1': '状态2',
'状态2': '',
'状态3': '状态1',
'状态4': '状态3'
};
loadStatus(jumpTable[currentStatusCode] || '');
}