认识Backbone (五)
Backbone.Router(路由)/ Backbone.history(历史)
Backbone.Router 为客户端路由提供了许多方法,并能连接到指定的动作(actions)和事件(events)。 对于不支持 History API 的旧浏览器,路由提供了优雅的回调函数并可以透明的进行 URL 片段的转换。
页面加载期间,当应用已经创建了所有的路由,需要调用 Backbone.history.start(),或Backbone.history.start({pushState: true}) 来确保驱动初始化 URL 的路由。想要停止监听URL的路由,使用 Backbone.history.stop().
History 作为全局路由服务用于处理 hashchange 事件或 pushState,匹配适合的路由,并触发回调函数。 我们不需要自己去做这些事情 — 如果使用带有键值对的 路由,Backbone.history 会被自动创建。
<div>
<a href="#help">help</a>
<a href="#search/list">list</a>
<a href="#search/list/p6">list page6</a>
<a href="#file/image/logo.png">image logo</a>
<a href="#account/total">account total</a>
</div>
//action方式绑定URL
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
},
help: function() {
console.log('help')
},
search: function(query, page) {
console.log(query +'/'+ page)
},
file: function(path){
console.log(path)
},
view: function(path,action){
console.log(path +'/'+ action)
}
});
var route = new PageRoute();
Backbone.history.start(); //event方式绑定URL
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
}
});
var route = new PageRoute();
route.on('route:help',function(){
console.log('help')
});
route.on('route:search',function(query,page){
console.log(query +'/'+ page)
});
route.on('route:file',function(path){
console.log(path)
});
route.on('route:view',function(path,action){
console.log(path +'/'+ action)
});
Backbone.history.start();
route router.route(route, name, [callback]) 动态修改URL的hash属性的匹配规则和动作函数。为路由对象手动创建路由,route 参数可以是 routing string(路由字符串) 或 正则表达式。 每个捕捉到的被传入的路由或正则表达式,都将作为参数传入回调函数(callback)。 一旦路由匹配, name 参数会触发 "route:name" 事件。如果callback参数省略 router[name]将被用来代替。 后来添加的路由可以覆盖先前声明的路由。
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
},
initialize: function () {
this.route("help", 'help', function () {
console.log('oo, help');
});
},
help: function() {
console.log('help')
},
search: function(query,page) {
console.log(query +'/'+ page)
},
file: function(path){
console.log(path)
},
view: function(path,action){
console.log(path +'/'+ action)
}
});
var route = new PageRoute();
route.route("search/:query/p:page", 'search', function(query,page){
console.log('oo, '+ query +'/'+ page)
});
Backbone.history.start();
navigate router.navigate(fragment, [options]) 每当你达到你的应用的一个点时,你想保存为一个URL, 可以调用navigate以更新的URL。 如果您也想调用路由功能, 设置trigger选项设置为true。 无需在浏览器的历史记录创建条目来更新URL, 设置 replace选项设置为true。
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
},
help: function() {
console.log('help')
},
search: function(query,page) {
console.log(query +'/'+ page)
},
file: function(path){
console.log(path)
},
view: function(path,action){
console.log(path +'/'+ action)
}
});
var route = new PageRoute();
setTimeout(function(){
route.navigate("search/list/p5",{trigger: true});
},2000);
setTimeout(function(){
route.navigate("help",{trigger: true});
},4000);
Backbone.history.start();
认识Backbone (五)的更多相关文章
- 用Backbone.js创建一个联系人管理系统(五)
原文: Build a Contacts Manager Using Backbone.js: Part 5 这是这系列教程最后一部分了. 之前所有的增删改都在前端完成. 这部分我们要把Contact ...
- Backbone源码解析(五):Route和History(路由)模块
今天是四月十二号,距离上次写博已经将近二十天了.一直忙于工作,回家被看书的时间占用了.连续两个礼拜被频繁的足球篮球以及各种体育运动弄的精疲力竭,所以很少抽时间来写技术博客.今天抽出时间把backbon ...
- (五)backbone - DEMO - 通信录改造之使用requirejs
DEMO介绍是 DEMO通信录的扩展,使用requirejs模块化整合 大体实现 • model文件 model/contact.js define(function (){ // user cont ...
- 论文阅读笔记五十九:Res2Net: A New Multi-scale Backbone Architecture(CVPR2019)
论文原址:https://arxiv.org/abs/1904.01169 摘要 视觉任务中多尺寸的特征表示十分重要,作为backbone的CNN的对尺寸表征能力越强,性能提升越大.目前,大多数多尺寸 ...
- 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore
本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)--requirejs + angular + a ...
- Backbone入门讲解
Backbone是一个实现了web前端mvc模式的js框架. 一种解决问题的通用方法,我们叫做模式. 设计模式:工厂模式,适配器模式,观察者模式等,推荐js设计模式这本书.设计模式是一种思想. 框架模 ...
- 用Backbone.js教程系列的链接
整理了一下用Backbone.js系列教程链接. Backbone.js入门教程 用Backbone.js创建一个联系人管理系统(一) 用Backbone.js创建一个联系人管理系统(二) 用Back ...
- 【转】Backbone使用总结
转自 http://www.pchou.info/javascript/2014/06/26/backbone-summary-01.html 开始在项目中大规模使用backbone,一路磕磕碰碰, ...
- 【再探backbone 01】模型-Model
前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...
随机推荐
- 开发腾讯移动游戏平台SDK Android版Ane扩展 总结
本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方式 问题一:编译报错:Unable to resolve target 'android ...
- Java程序猿之从菜鸟到职场高手的必看
J2SE之入门引导 Java基础系列之初识JAVA Java基础系列之Java语法 ...
- c++多态的案例分析
近期在研究c++中多态的应用 ,当中遇到些许的疑问与问题,可是终于的结果是不容置疑的,以下记录下我的学习过程,以纪念本个知识点. 首先,是从一个案例開始的,题目大意是这种: 设定一个多边形的公共类,然 ...
- java获取日期之间的差异
转载请注明出处.谢谢http://blog.csdn.net/harryweasley/article/details/42121485 当想到要计算差值.我们肯定想的是"2014.12.1 ...
- Java学习文件夹
每天进步一点点,先研究一门语言深入研究下去.
- GCC的使用(编译,链接,运行)
以下这三篇日志非常的好,真的非常的好.介绍使用gcc编译,链接,运行c程序. 1.http://lveyo.iteye.com/blog/240578 2.http://lveyo.iteye.com ...
- ECshop lib_base.php on line 1241 错误解决方法
ECSHOP做的一个网站,突然报这个错误,整个网站打不开,后来找了很久,终于找到这个方法,亲测可用 Notice: Undefinedvariable: data in D:\wwwroot\KISS ...
- String,StringBuffer以及StringBuilder的差别
1.定义: String:String 类代表字符串. Java 程序中的全部字符串字面值(如"abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改. 字符 ...
- JDBC连接数据库和释放连接
用久了hibernate现在对于JDBC是怎么实现数据库的连接和释放,所以特地总结下关于JDBC的知识,目的是用于提醒自己很多Java的基础知识需要健全. package com.ssh.action ...
- 集成学习---bagging and boosting
作为集成学习的二个方法,其实bagging和boosting的实现比较容易理解,但是理论证明比较费力.下面首先介绍这两种方法. 所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升 ...