我有以下变量:"hello↵↵world"。 (价值来自textarea)
问题是,当我要求Meteor使用{{content}}显示时,所有内容都显示在同一行,并且不会考虑换行符。
{{content}}
# renders
hello world
# should render
hello
world
答案 0 :(得分:11)
如果您使用<pre>
标签使用引导程序,则会出现一些您可能不想要的样式...如果您想避免这种情况,可以使用一些简单的CSS来解决这个问题:
.pre {
white-space: pre;
}
然后用你的内容包装你的内容:
<span class="pre">{{content}}</span>
答案 1 :(得分:8)
<pre>
对我来说很好,直到我有很长的文字。默认情况下,它禁用换行和长行打破页面布局或被截断。
你可以用white-space: pre-wrap;
解决它,但我最终做的是创建一个Spacebars-Helper,它首先转义文本,然后用<br/>
替换所有中断
UI.registerHelper('breaklines', function(text, options) {
text = s.escapeHTML(text);
text = text.replace(/(\r\n|\n|\r)/gm, '<br/>');
return new Spacebars.SafeString(text);
});
然后我会以下列方式在模板中使用帮助器:
{{breaklines title}}
escapeHTML
是Underscore.string的一部分,Underscore.string是一个字符串操作扩展的集合,您可以使用meteor add underscorestring:underscore.string
引入它,但是任何其他转义html的方式都可以正常工作。
答案 2 :(得分:4)
一种方法是创建一个把手助手:
Handlebars.registerHelper 'breaklines', (text) ->
text = text.replace /(\r\n|\n|\r)/gm, '<br>'
return text
然后这样做:(不要忘记三个括号!)
{{{breaklines content}}}
答案 3 :(得分:3)
用
换行 <pre>
Any
amount of
formatting.
</pre>
答案 4 :(得分:0)
只需使用<br>
就足够了。