Backbone.js&Handlebars.js来创建相对URL

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

本文关键字:js 创建 相对 URL amp Backbone Handlebars      更新时间:2024-05-25

在flask中,要创建url,我在模板(Jinja2)中使用{{ url_for('login') }},它会返回与url相关联的名称login(例如/auth/login/)。如何在Handlebars.js和Backbone.js中执行此操作?它已经实施了吗?

我想要实现的目标:{{#urlfor}}loginRoute{{/urlfor}}
并且为了返回:/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') });