Backbone获取URL参数

时间:2015-04-05 23:37:06

标签: javascript backbone.js

我有一个Backbone js应用程序,当我转到URL domain.com/item/1或domain / item / 2`等时运行。当应用程序启动时,我创建了一个我的模型的新实例并传递了一个需要的ID成为URL的最后一部分。有没有办法在Backbone中访问它?

我知道构建一个可以在哈希之后访问参数的路由器很容易,所以我最好将我的网址更改为domain.com/item/1#1

1 个答案:

答案 0 :(得分:1)

我不知道你有一个骨干路由器。但是这很容易通过Backbone.router的一个基本用途来实现。 并且您不必使用#或任何其他内容。您可以在斜杠之间访问任何内容。

routes: {
  "item/:page":  function(page){
      //page holds the query parameter.
    }
}
  

路由哈希将带参数的URL映射到路由器上的函数(或者只是直接函数定义,如果您愿意),类似于View的事件哈希。路由可以包含参数部分,:param,它匹配斜杠之间的单个URL组件;和splat parts * splat,可以匹配任意数量的URL组件。通过将其括在括号中(/:可选),可以使路径的一部分成为可选路径。

请阅读文档中的Backbone.router部分以获取详细信息。

http://backbonejs.org/#Router

仅供参考,将查询参数传递给模型时,不应在用户启动应用程序时执行,而是在调用routes时执行。每次要更改页面时,都需要更改URL并重新加载整个页面。

并且通常Controller会生成模型实例,这意味着,您最好使用router中的参数创建控制器实例,然后在控制器中创建一个模型。像这样

routes: {
  "item/:page":  function(page){
      var page = new YourNameSpace.Controller.Foo({pageId : page});
      page.render();
    }
}

//inside of Itempage Controller
initialize : function(){
  this.model = new YourNameSpace.Model.Foo({pageId : this.pageId});
}