backbone.js - How to get ID from URL -
i developing backbone marionette web app. app got routes this:
projects/:id/tasks
how can id of route (url)?
if use whole url:
backbone.history.fragment
update
this how define routes projects.
@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
the router provide handler function attributes parsed fro url.
you have route defined "projects/:id" : "showproject"
handler is
showproject: (id, project) -> new projectsapp.show.controller id: id project: project
they don't match: router send parsed id
url, that's it. need project on own, before passing view, e.g.:
showproject: (id) -> project = @projects_collection.get id new projectsapp.show.controller id: id project: project
of course, means need able access project collection, or fetch project, etc.
Comments
Post a Comment