实现路由跳转

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;
        },
上一篇 下一篇

猜你喜欢

热点阅读