带把手JS的URL

时间:2015-05-12 04:09:34

标签: html node.js handlebars.js handlebarshelper

我正在尝试使用把手在注册后发送给用户的电子邮件html模板中呈现网址以进行确认步骤。

链接汇编如下:

innerHTML

使用的链接采用以下格式:

responseText

每次发送电子邮件时,链接都会被篡改并变为:

var data = { user: { email: body.email, token: 'tmpToken', link: '/confirm?email=' + body.email + '&token=' + 'tmpToken' }, appName: 'XYZ' }; ,非常讨厌。

我在nodejs中使用把手来使用把手引用html中的url

"/confirm?email=x&token=y"

我尝试使用Handlebars助手:

"confirm/?email=y&token=y"

关于为什么字符串中的问号被转换为“/?”的任何想法?

1 个答案:

答案 0 :(得分:0)

此代码基于您提供的代码,不会注入/。所以在某个地方可能会发生其他事情。但这可以按预期工作:

var Handlebars = require('handlebars');

var source = '<a href="{{{link_to}}}" style="border: 0;" target="_blank">';
var template = Handlebars.compile(source);

var data = {
            user: {
                    email: 'foo@example.com',
                    token: 'tmpToken',

                    link: '/confirm?email=' + 'foo@example.com' + '&token=' + 'tmpToken'
            },
            appName: 'XYZ'
    };

Handlebars.registerHelper('link_to', function() {
    return new Handlebars.SafeString(Handlebars.Utils.escapeExpression(data.user.link));
});
var result = template(data);

console.log(result);  // logs: <a href="/confirm?email=foo@example.com&amp;token=tmpToken" style="border: 0;" target="_blank">