实现路由跳转
2018-06-08 本文已影响0人
路耀广的前端微博
_getRouteConf: function(route) {
var obj = {},
getList = function(curconf){
return curconf.list || curconf.cp_list || curconf.app_list || curconf.classification_list;
},
fn = function(name, conf) {
var list = getList(conf), p, o;
if (!list) {
// list不存在, 结束
obj[name] = {
name : name,
value : conf
};
} else {
// 递归list
for (p in list) {
fn(name + '.' + p, list[p]);
}
// 如果default_index存在,说明当前path要指向default_index
if (conf.default_index) {
obj[name] = obj[name + '.' + conf.default_index];
} else {
// 不存在default_index,说明是个独立的module, 复制除了list的值
o = {};
for (p in conf) {
if (conf[p] !== list) {
o[p] = conf[p];
}
}
obj[name] = {
name : name,
value : o
};
}
}
};
// conf首次肯定有list, 放在外面, 是为了不用拼接name.
var list = getList(route), p;
for (p in list) {
fn(p, list[p]);
}
obj["_default"] = obj[route.default_index];
return obj;
},