2016-04-13 10 views
1

フラスコでURLを作成するには、{{ url_for('login') }}をテンプレート(Jinja2)に使用し、URLがどのようなものであれ、login(たとえば、/auth/login/)を返します。 Handlebars.jsとBackbone.jsでどうすればいいですか?既に実装されていますか?私が達成したい何Backbone.js&Handlebars.jsを使用して相対URLを作成する

{{#urlfor}}loginRoute{{/urlfor}}
、それは返すために: /auth/login

マイルート:

routes: { 
    '': 'indexRoute', 
    'auth/login': 'loginRoute' 
} 

答えて

0

私はあなたがこれをやりたいと思っられる理由の意味を理解することはできません。

ヘルパーは十分に単純になります:あなたは、いくつかの値を保持しているいくつかのオブジェクトのキーの名前を見つけて返すためHandlebarsヘルパーを作成してやっているだろうすべての

Handlebars.registerHelper('urlfor', function (value) { 
    for (var key in routes) { 
     if (routes.hasOwnProperty(key) && routes[key] === value) { 
      return key; 
     } 
    } 
    return null; 
}); 

(これは、想定してい。あなたは次のようにテンプレートでこのヘルパーを使用するヘルパーはそのレキシカルスコープでroutesへのアクセスを持っている)

こともちろん、:

<script id="Template" type="text/template"> 
    <p>The URL for loginRoute is {{urlfor 'loginRoute'}}</p> 
</script> 

しかし、それはヘルパーを見送る代わりに、あなたのテンプレート関数を実行する前にこの計算を行うと、単にパラメータとして値を渡すために、より理にかなっていることに私には思える:

template({ loginUrl: getUrlFor('loginRoute') }); 
+0

応答のおかげでたくさん!参考までに、ルートを変更すると、すべてのURLを更新する必要はありません。 – user3223010

関連する問題