特定的句柄 - 在传递Handlebars表达式时,可以转义单引号和双引号

Kat*_*ate 16 html javascript handlebars.js

HTML和把手:

onclick='shareItem("{{name}}")'> 
Run Code Online (Sandbox Code Playgroud)

如果在其中包含双引号,则无法成功传递安全转义的名称.

onclick="shareItem('{{name}}')"> 
Run Code Online (Sandbox Code Playgroud)

如果名称中包含单引号,则无法成功传递安全转义的名称.

我需要处理两种可能性 - 甚至在同一个字符串中.

必须定义JS变量并将其传递给反斜杠加法器感觉很草率.

有没有更清洁的方法来做手柄或小胡子?

Sey*_*ong 18

您需要注册一个操纵上下文的内联帮助器.在您的情况下,您需要转义单引号或双引号.

Handlebars.registerHelper('escape', function(variable) {
  return variable.replace(/(['"])/g, '\\$1');
});
Run Code Online (Sandbox Code Playgroud)

通过注册这样的帮助器,您可以将它与变量一起使用以实现您想要的效果.

{{ escape name }} # expects to escape any ' or "
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的例子来在jsfiddle上演示这个:http://jsfiddle.net/VLy4L/


小智 12

我试图逃避单引号时遇到问题,并且我使用了手柄提供的帮助器,您可以使用三个括号{{{variable}}}进行转义