首页 > 代码库 > Backbone学习记录(6)

Backbone学习记录(6)

路由

backbone将路由规则和一个方法名绑定到一起,来控制单页的hash,以及单页的前进后退。

var UserRouter = Backbone.Router.extend({  routes: {      "":                      "main",    "help":                 "help",    // #help    "search/:query":        "search",  // #search/page    "search/:query/p:page": "search", // #search/page/p1    "*error":                 "error",   },  main:function(){      console.log("main");  },  help: function() {    console.log("help");  },  search: function(query, page) {    console.log(query,page);  },  error:function(error){      console.log(error,"is a error hash!");  }});var user_router=new UserRouter();Backbone.history.start();//开启前history监控hashchange//http://localhost/backbone_test/backbone_test.html//=> main//http://localhost/backbone_test/backbone_test.html#help//=> help//http://localhost/backbone_test/backbone_test.html#search/page//page null //http://localhost/backbone_test/backbone_test.html#search/page/p1//page 1 //http://localhost/backbone_test/backbone_test.html#other//other is a error hash!

路由规则

search/:query中 : 表示查询,,当输入#search/page 这里的page就作为参数传给与规则search/:query绑定的函数中。

*表示匹配0或多个字符 ,如果上面的例子中没有这个"": "main"规则,url后面输入#,控制台就会显示 null "is a error hash!" ,因为 * 匹配了0个字符。
#之后的所有字符,都可以作为一个整体字符串的参数传给和该规则绑定的方法中。*也可以和:混用。比如对于规则"*search/:query/error": "error",url后面输入“#search/page/url”,“search/page/url”就作为参数传给了error方法。

Backbone.history.start()或Backbone.history.start({pushState: true})用于开启history监控,这样就能应用路由规则了。

Backbone学习记录(6)