Backbone系列:Router的学习

Router的学习

本章通过定义简单的路由规则,学习Router
在线demo: router学习

Backbone的路由会监听URL的"#"后面的部分
var App = Backbone.Router.extend({
    // 定义路由、动作的键值对,注意路由前面没有"/"
    // *表示通配,会匹配多个url组件
    routes: {
        '*actions': 'defaultRoute' // 匹配所有含#的url,并把#后面作为动作
    },
    // 定义路由被匹配时,触发的对应的动作
    defaultRoute: function(actions) {
        alert(actions);
    }
});
var app = new App();

// 需要调用该方法来初始化URL路由
Backbone.history.start();
这样打开页面时,就会alert"#"后面的参数。

在匹配路由时,会触发一个基于动作名称的event,所以我们也能监听这个路由,绑定对应的处理函数。所以下面的函数也能达到同样的效果
var App = Backbone.Router.extend({
    // 定义路由、动作的键值对
    // *表示通配,会匹配多个url组件
    routes: {
        '*actions': 'defaultRoute' // 匹配所有含#的url,并把#后面作为动作
    }
});
var app = new App();
// 监听基于动作名称的事件,绑定处理程序也能达到同样的效果
app.on('route:defaultRoute', function(actions) {
    alert(actions);
});

// 需要调用该方法来初始化URL路由
Backbone.history.start();
但如果Router类定义了路由的对应动作,基于动作名称的event也绑定的处理程序,他们并不会覆盖,而是先触发路由定义的动作,再触发event事件
var App = Backbone.Router.extend({
    // 定义路由、动作的键值对
    // *表示通配,会匹配多个url组件
    routes: {
        '*actions': 'defaultRoute' // 匹配所有含#的url,并把#后面作为动作
    },
    defaultRoute: function(actions) {
        alert('我会先被触发');
    }
});
var app = new App();
// 监听基于动作名称的事件,绑定处理程序也能达到同样的效果
app.on('route:defaultRoute', function(actions) {
    alert('然后我再被触发');
});

// 需要调用该方法来初始化URL路由
Backbone.history.start();
上面的代码,只要路由匹配,会先后弹出两个alert框

动态路由

有时我们需要根据不同的哈希值,做不同的动作,所以我们可以在routes中定义匹配不同的url,然后定义对应的动作
var App = Backbone.Router.extend({
    // 定义路由、动作的键值对
    // *表示通配,会匹配多个url组件
    routes: {
        // http://joezheng2015.github.io/learningBackbone/demos/view/router.html#post/120
        'post/:id': 'doPost', // 注意*会匹配所有url,所以应该放在最后面
        '*actions': 'defaultRoute' // 匹配所有含#的url,并把#后面作为动作
    },
    defaultRoute: function(actions) {
        alert(actions);
    },
    doPost: function(id) {
        alert('你post了:' + id); // 120
    }
});
var app = new App();

// 需要调用该方法来初始化URL路由
Backbone.history.start();




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值