Backbone系列:Router的学习
2015-10-31 11:19
316 查看
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();
相关文章推荐
- Timus Online Judge 1658 Sum of Digits
- poj1258prim算法
- mil,mm与inch之间的转换
- poj1258prim算法
- sublime text 全局搜索
- 高并发与锁(二)
- 项目视频界面横屏返回竖屏,oncreate执行2次
- linux服务开机启动
- 免秘钥SSH登陆,切记切换用户
- [TwistedFate]实例变量可⻅度、⽅法
- 浙大PAT(PAT Basic Level) 1045—— 快速排序
- iOS线程报错
- winfrom 中boderstyle 设置为none后不能移动的问题
- 安装mysql
- Spring Security的核心拦截器
- slf4j+log4j
- 数据库-除
- 数据挖掘——总结 【未完待续】
- innocence
- git访问https