目前,我在手把中遇到了三重藏匿助手的问题。我有一个字符串来自一个我无法控制的服务,它正在返回转义的html,它已经在其中转义了html。下面澄清一个例子:
<p>&lt;span class=\"font-bold\"&gt;content content Support&lt;/span&gt;, content content &nbsp; content content content.</p>
很明显,当使用三重藏匿时,我会得到
<p><span class=\"font-bold\">content content Support</span>, content content content content content.</p>
由于它是嵌套的,因此内部的跨度不会转义(如果有意义的话)。
我想知道我是否可以重载一个方法或某些东西来帮助我递归unescape。或者那里有更好的解决方案吗?
答案 0 :(得分:2)
尝试使用此帮助程序。它应该工作
Handlebars.registerHelper('html_decoder', function(text) {
var str = unescape(text).replace(/&/g, '&');
var div = document.createElement('div');
div.innerHTML = str;
return div.firstChild.nodeValue;
});
如果您使用Ember,可能就像这样
Ember.Handlebars.helper('html_decoder', function(text) {
var str = unescape(text).replace(/&/g, '&');
var div = document.createElement('div');
div.innerHTML = str;
return div.firstChild.nodeValue;
});
并像
一样使用它{{html_decoder myString}}
答案 1 :(得分:2)
我知道问题是从2014年开始,Handlebars documentation现在提出这个简单的解决方案:
如果您不想转义某个值,请使用此{{{expression}}}
之类的“triple-stash”。
如果你想要更多的控制注册一个帮助器,就像在同一文档中给出的例子中所解释的那样。