Backbone.js & Handlebars.js 创建亲戚 URL

Backbone.js & Handlebars.js to create a relative URL

在 flask 中,为了创建一个 url,我在模板 (Jinja2) 中使用了 {{ url_for('login') }},它 returns 无论 url 与名称 login(例如 /auth/login/)。我如何在 Handlebars.js 和 Backbone.js 中执行此操作?是否已经实施?

我想达到的目标: {{#urlfor}}loginRoute{{/urlfor}}
为此 return: /auth/login

我的路线:

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

我不明白你为什么要这样做。您要做的就是创建一个 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') });