Backbone.js 如何从URL获取ID
我正在开发一个主干木偶网络应用程序。 我使用此应用程序我得到的路线如下所示:Backbone.js 如何从URL获取ID,backbone.js,marionette,Backbone.js,Marionette,我正在开发一个主干木偶网络应用程序。 我使用此应用程序我得到的路线如下所示: projects/:id/tasks 如何获取该路由的ID(URL) 如果我使用这个,我会得到整个URL: Backbone.history.fragment 更新 这就是我为项目定义路线的方式 @Projectapp.module "ProjectsApp", (ProjectsApp, App, Backbone, Marionette, $, _) -> class ProjectsApp.R
projects/:id/tasks
如何获取该路由的ID(URL)
如果我使用这个,我会得到整个URL:
Backbone.history.fragment
更新
这就是我为项目定义路线的方式
@Projectapp.module "ProjectsApp", (ProjectsApp, App, Backbone, Marionette, $, _) ->
class ProjectsApp.Router extends Marionette.AppRouter
appRoutes:
"projects/new" : "newProject"
"projects/:id" : "showProject"
"projects/:id/edit" : "editProject"
"projects" : "listProjects"
API =
listProjects: ->
new ProjectsApp.List.Controller
newProject: ->
new ProjectsApp.New.Controller
showProject: (id, project) ->
new ProjectsApp.Show.Controller
id: id
project: project
editProject: (id, project) ->
new ProjectsApp.Edit.Controller
id: id
project: project
App.Router.on "route:newProject", (project_id) ->
alert project_id
App.commands.setHandler "new:crew:member", (region) ->
API.newCrew region
App.vent.on "project:new:clicked", (project) ->
App.navigate "projects/new", true
App.vent.on "project:tasks:clicked", (project) ->
App.navigate "projects/#{project.id}/tasks", true
App.vent.on "project:created", (project) ->
App.navigate "projects/#{project.id}", true
App.vent.on "project:show:clicked project:back:clicked", (project) ->
App.navigate "projects/#{project.id}"
API.showProject project.id, project
App.vent.on "project:clicked project:edit:clicked", (project) ->
App.navigate "projects/#{project.id}/edit"
API.editProject project.id, project
App.vent.on "project:cancelled project:list:back:clicked", (project) ->
App.navigate "projects"
API.listProjects()
App.addInitializer ->
new ProjectsApp.Router
controller: API
路由器的定义应与此类似(示例): 然后,可以将路由事件绑定到接受路由变量的函数,例如:
Router.on("route:go_to_page",function(page) {
// page parameter corresponds to :number in the url hash, so now you can query your models with this string.
});
希望这个例子能帮助 路由器将为处理程序函数提供从URL解析的属性 您有一个使用
“projects/:id:“showProject”
定义的路由,但是您的处理程序是
showProject: (id, project) ->
new ProjectsApp.Show.Controller
id: id
project: project
它们不匹配:路由器将从URL发送解析的id
,但仅此而已。在将项目传递给视图之前,您需要自己获取项目,例如:
showProject: (id) ->
project = @projects_collection.get id
new ProjectsApp.Show.Controller
id: id
project: project
当然,这意味着您需要能够访问项目集合,或获取项目等。啊,太好了,谢谢。我使用project/:id/tasks的原因是,用户单击一个项目,然后获取属于该项目的所有任务的列表。有没有办法获得项目的ID?是的,你可以(在你的路由器中)这样做:
routes:{“projects/:ID/tasks:“do\u something”}
然后:router.on(“route:do\u something”,函数(project\u ID){//project\u ID是你需要的})代码>希望我正确理解了你的问题…更新了我的问题。我如何将您的解决方案用于我的代码?我不熟悉coffee脚本,但我认为App.Router.on“route:editProject”,(project\u id)->alert project\u id
应该可以工作编辑:当然,将alert函数更改为您需要的任何功能。。。据我所知,你的问题是获取项目id,对吗?你想在哪里访问它?在特定路由的回调方法中?我想在获取新任务时访问它。您是否可以使用更多代码更新问题,以显示获取新任务的确切位置?
showProject: (id) ->
project = @projects_collection.get id
new ProjectsApp.Show.Controller
id: id
project: project