认识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的学习很是基础,前几天有个园友问我如何将路由 ...
随机推荐
- make 2>&1 | tee log.txt之小析
前言 接触过linux的人,或多或少都会了解一点make 2>&1 | tee log.txt这个命令. 1. make是什么? make是linux下一个非常强大的命令,简单点就是你要 ...
- Cocos2dx 3.x创建Layer的步骤
创建 1.新建类文件.注意文件夹为Classes下.否则文件不能正常找到. 2.改动预编译头.如用VS,默觉得#pragma once,为了兼容,改为#ifndef | #define | #endi ...
- ZOJ 3635 Cinema in Akiba(线段树)
Cinema in Akiba (CIA) is a small but very popular cinema in Akihabara. Every night the cinema is ful ...
- hdu2159(二维完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 题意:打怪,还有最后一级,忍耐度有限m,问在杀怪数量上限为s的情况下能否获取n经验而通关,且忍耐 ...
- PPPOE 模拟环境搭建
这段时间.包含我自己測试OTT盒子 PPPOE的时候比較痛苦.要不就是在别人的位置上測试.要不就是借用PPPOE的设备,认为还是自己搭建一个PPPOE真实拨号上网的环境多好! 可是坑爹的win7找不到 ...
- 用链表实现栈----《数据结构与算法分析----C语言描述》
一.头文件: #ifndef _STACK_LINK_H_ #define _STACK_LINK_H_ struct stack_record; typedef struct stack_recor ...
- ThinkPHP中的volist标签中使用eq标签出错
参考地址:http://blog.csdn.net/luquansen/article/details/18310855 源码: <volist id="v" name=&q ...
- C++ 在字符串中插入子串+推断字符串是否由空格组成
// Example3.cpp : 定义控制台应用程序的入口点. #include "StdAfx.h" #include <string> #include < ...
- CF 460C Present 【DP+】主意
给你n高树花.m日,每天连续浇筑w鲜花.一天一次,花长1高度单位 求m天后.最矮的花最高是多少 最大最小问题能够用二分来解 首先我们能够得到全部花的最矮高度即答案的下界,给这个花浇m天即是答案的上界 ...
- 阿里云server(ECS)优惠券领取
CoderMan的博客也是放置在阿里云的ECS上.速度绝对是刚刚的,大家打开的速度肯定不会慢. 有些同志们至今可能还在用虚拟主机吧,其实阿里云server真心不贵,有俩种计费方式:各自是按月计费和按流 ...