q.js icon indicating copy to clipboard operation
q.js copied to clipboard

支持路由嵌套么?

Open koyoyoo opened this issue 8 years ago • 9 comments
trafficstars

比如2个层级以上的路由

koyoyoo avatar Nov 16 '17 03:11 koyoyoo

多层级是支持的,q.js 不关注回调之后的事情

itorr avatar Nov 16 '17 03:11 itorr

没有看见相关的资料 默认的demo只有一个 菜单,点了就出现内容。 有没有点了菜单后 又出现一个子菜单,再点才出现内容的demo?

koyoyoo avatar Nov 16 '17 03:11 koyoyoo

那需要在回调内针对传入参数对DOM进行修改

加了一个例子 https://github.com/itorr/q.js/blob/master/demos/level2.html

itorr avatar Nov 16 '17 03:11 itorr

你好,我看了你给的例子,我的意思是这样: Q.reg('home',function(type){ document.getElementById('m').innerHTML='打开了 Home 菜单<br>'; document.getElementById('m').innerHTML+='<a href="#/home/city">加载home下面的子菜单#/city</a>'; }); Q.reg('home/city',function(){//这里注册子菜单。 console.log("打开城市内容"); }); Q.init({ index:'home'/* 首页地址 */ });

koyoyoo avatar Nov 16 '17 06:11 koyoyoo

如果 view 内容完全不同 你可以用正则表达式匹配 比如 /^home/city/

正则表达式匹配优先于普通匹配

itorr avatar Nov 16 '17 07:11 itorr

/ -》 / 手机端发布会少一个反斜杠

itorr avatar Nov 16 '17 07:11 itorr

/ 替换成 \/

itorr avatar Nov 16 '17 08:11 itorr

我用正则转换了/斜线,但是注册的 home/menu 不执行,求解 Q.reg('home',function(){ document.getElementById('m').innerHTML='打开了主页<br>'; document.getElementById('m').innerHTML+='加载子菜单:<a href="#/home/menu">#/home/menu</a>'; }); Q.reg('home\/menu',function(){ console.log('打开菜单页') });

koyoyoo avatar Nov 17 '17 05:11 koyoyoo

是这样的,这里需要用正则表达式 而不是字符串形式

Q.reg(/^home\/menu/,function(){
    console.log('打开菜单页');
});

itorr avatar Nov 17 '17 07:11 itorr