Backbone學習記錄(6)

路由

backbone將路由規則和一個方法名綁定到一塊兒,來控制單頁的hash,以及單頁的前進後退。html

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監控,這樣就能應用路由規則了。
相關文章
相關標籤/搜索