与Django的{{ url }}
类似,是否有通过传递名称和变量来反转特定路线的方法或方法。
// 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');
会返回哈希:!/user/5
router.reverse('homeAction');
会返回哈希:!/
答案 0 :(得分: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"
答案 1 :(得分:4)
不幸的是,没有这样的东西内置于骨干网。我想要类似的东西,已经在列表上讨论过一次或两次 - 甚至可能是拉动请求(目前还不记得)。但它还没有完成。
我提出的最好的方法是编写自己的方法来生成正确的路由字符串:
function userEditPath(userId){
return "/user/" + userId + "/edit";
}