BackboneJs入门学习[09]—Router路由实践

BackboneJs入门学习—Router路由实践

在上一篇中,我们介绍了Router,但是并没有讲解Router是如何传递参数的。是的,
Router是如何匹配所给出的URL中的内容,并将对应位置的内容作为参数传递的呢,这篇中我们继续。

1. 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匹配“ # ” 标签之后内容的方法:

  1. 用“:”来把#后面对应的位置作参数;
  2. 用“*”能够匹配所有的URL。

    图示:

在a 标签的href中,“#”后面跟着的是posts/66, 而在routers对象中,”posts/:id”中冒号” :
“后面的id就是匹配的参数,那么就形成“#/posts/66”与“posts/:id”的匹配;
BackboneJs入门学习[09]—Router路由实践_第1张图片

再例如:
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的匹配规则有更清楚的认识?没有的话,请留言,我们多交流哈~
BackboneJs入门学习[09]—Router路由实践_第2张图片

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的。我也受到启发:在拼搏的过程中,你或许什么都没有得到,可能还失去了很多,但是请乐观、坚持,总会在最后有所回报的!
加油!

BackboneJs入门学习[09]—Router路由实践_第3张图片

你可能感兴趣的:(url,backbone,实战,教程,router)