2011-10-04 7 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'); 

のようないくつかの方法は、ハッシュを返します:!/user/5

router.reverse('homeAction'); 

は、ハッシュを返します:!/

答えて

4

は残念ながらありません、このようなものはありませんバックボーンに組み込まれています。私は何か似たものが欲しいと思っています。これについては1回か2回の議論があります。しかし、それはまだ行われていません。逆ルーティングについて

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" 
関連する問題