BackboneJs入门学习—Router路由实践
在上一篇中,我们介绍了Router,但是并没有讲解Router是如何传递参数的。是的,
Router是如何匹配所给出的URL中的内容,并将对应位置的内容作为参数传递的呢,这篇中我们继续。
- Router如何映射
先来看一个示例:
var AppRouter=Backbone.Router.extend({ //routers是散列映射属性,将状态与活动关联起来,添加路由路径,要求重写父类的routes这个对象 routers:{ "posts/:id":"getPost", "*actions":"defaultRoute" }, getPost:function(id){ alert(id); }, defaultRoute:function(actions){ alert(actions); } }); var app_router=new AppRouter; //Backbong.history.start()能让我们在点击后退或是前进按钮时同样触发路由事件 Backbone.history.start(); ---------- //要传递的参数为66,即id为66的参数 <a href="#/posts/66">Id=66</a>
讲解:Router匹配“ # ” 标签*之后内容的方法:*
- 用“:”来把#后面对应的位置作参数;
- 用“*”能够匹配所有的URL。
图示:
在a 标签的href中,“#”后面跟着的是posts/66, 而在routers对象中,“posts/:id"中冒号” :
"后面的id就是匹配的参数,那么就形成**“#/posts/66”与“posts/:id”的匹配;**
再例如:
demo 01
<script> routes:{ "/download/*path":"downloadFile" }, downloadFile(){ alert(path); //输出:user/images/1.jpg,即* 能匹配所有的url; } </script> <body> 链接为: <a href="#/download/user/images/1.jpg">点击查看结果</a> </body>
再如:
demo 02
<script> routes:{ "/:route/:action":"loadView" //表明在loadView中接受2个参数:route和action,因为route和action之前都有一个冒号":" }, loadView(route,action){ alert(route+"&"+action); //输出:dashboard&graph,即冒号“:”匹配的是href的url中对应的字符串参数 } </script> <body> 链接为: <a href="#/dashboard/graph">点击查看结果</a> </body>
通过以上的讲解,你是否对Router的匹配规则有更清楚的认识?没有的话,请留言,我们多交流哈~
2. 手动触发Router——navigate()
在一些情况下,我们不像像要点击了a 标签之后才发生url的变更,而希望自动发生url的变更,那么这个时候,我们就可以使用到Router的navigate方法。
先看一个示例:
routes:{ "posts/:id":"getPost", "manual":"manual", "*actions":"defaultRoute" }, getPost:function(id){ alert("id="+id); }, manual:function(){ alert("触发脚本..."); app_router.navigate("/posts"+error404,{ trigger:true, replace:true }); //navigate的第一个参数表示要变化或是替换的的url //trigger为true表示触发事件;为false只是url变化,不触发事件 //replace表示url替换,而非转到另一个url;为true则浏览器的history不会记录该变动,即在历史记录中不会有url发生改动的记录 } 链接为: //点击之后,会触发posts/:id对应的方法 < a href="#/manual">点击触发脚本< /a >
通过navigate方法,我们就能实现url的更新。在Backbone的官方文档中这样解释:
每当你达到你的应用的一个点时,你想保存为一个URL, 可以调用navigate以更新的URL。
Ok,这一篇中我们介绍了Router的相关方法与匹配规则,下一篇中我们又将进入到Backbone的新模块的学习中——View模块。
每篇一语:
”周五公司里接着中秋这个节日举办了博饼游戏,首先选出每一桌的状元,和每一桌分数最低的 衰神。n位状元再次Pk,n
位衰神也再次Pk,又选出了1位状元和1位衰神,结果在状元与衰神的Pk中,衰神逆袭了!“这个剧情似乎还是挺nice的。我也受到启发:在拼搏的过程中,你或许什么都没有得到,可能还失去了很多,但是请乐观、坚持,总会在最后有所回报的!
加油!