2011-10-04 6 views
8

Django의 {{ url }}과 마찬가지로 이름과 변수를 전달하여 특정 경로를 되돌릴 수있는 방법이나 방법이 있습니까?백본 js의 경로 역방향

// example Router 
var router = Backbone.Router.extend({ 
    routes: { 
     '!/user/:user_id': 'editUserAction', 
     '!/': 'homeAction' 
    }, 
    editUserAction(user_id) { 
     // edit user view 
    }, 
    homeAction() { 
     // home view 
    } 
}); 

router.reverse('editUserAction', '5'); 

같은 일부 방법은 해시 돌아올 것이라고 : !/

답변

4

불행하게도 아니, 이런 일이되지 않습니다 : !/user/5

router.reverse('homeAction'); 

해시을 반환을 백본에 내장되어 있습니다. 나는 비슷한 것을 원했고, 이것에 대한 토론이 한두 번 있었다. 어쩌면 풀 요청 (아마도 지금 당장은 기억이 안나)일지도 모른다. 그러나 아직 완료되지 않았습니다. 역 라우팅에 대한

function userEditPath(userId){ 
    return "/user/" + userId + "/edit"; 
} 
+5

, 그것을 캡슐화한다. – Leopd

5

토론 :

내가 함께 왔어요 그 가장 올바른 경로 문자열을 만들어 내 자신의 방법을 작성하는 것입니다. 당신이 해킹을 쓰기 해 경우 https://github.com/documentcloud/backbone/issues/951

간단한 해킹

var personRoutes = { 
    list: "/persons", 
    show: "/persons/:id", 
    edit: "/persons/:id/edit" 
} 

var getRoute = function(obj, route, routeDefinitions){ 
    return routeDefinitions[route].replace(":id", obj.id); 
} 

var person = new Model({id: 1}); 
var route = getRoute(person, "edit", personRoutes); // => "/persons/1/edit"