我有一个Backbone js应用程序,当我转到URL domain.com/item/1
或domain / item / 2`等时运行。当应用程序启动时,我创建了一个我的模型的新实例并传递了一个需要的ID成为URL的最后一部分。有没有办法在Backbone中访问它?
我知道构建一个可以在哈希之后访问参数的路由器很容易,所以我最好将我的网址更改为domain.com/item/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部分以获取详细信息。
仅供参考,将查询参数传递给模型时,不应在用户启动应用程序时执行,而是在调用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});
}