BackboneJs入门学习—Router路由实践
在上一篇中,我们介绍了Router,但是并没有讲解Router是如何传递参数的。是的, Router是如何匹配所给出的URL中的内容,并将对应位置的内容作为参数传递的呢,这篇中我们继续。
- Router如何映射
先来看一个示例:
代码语言:javascript复制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
代码语言:javascript复制<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
代码语言:javascript复制<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方法。
先看一个示例:
代码语言:javascript复制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的。 我也受到启发:在拼搏的过程中,你或许什么都没有得到,可能还失去了很多,但是请乐观、坚持,总会在最后有所回报的! 加油!