0

我使用 Backbone 模型作为 Mustache 模板的输入来生成 HTML。

我有一个带有许多属性的 Backbone 模型,例如名称、描述和 ID。description 属性可以包含回车,<br>当它们在模板中呈现时,我想将它们呈现为标签。

默认情况下,Mustache 只是直接输出回车,因此标记看起来很整洁,但渲染结果没有中断。

我并不特别想替换 description 属性中的 \n\r,因为该属性可以在其他地方使用(例如,在 alt 或元标记中)。

到目前为止,我唯一的想法是添加一个具有格式化文本的重复描述属性。

Mustache 中没有将 HTML 换行符格式化为<br>标签的内容吗?

4

2 回答 2

2

胡须是非常有限的。如果您需要 Mustache 模板中的任何特殊内容,请在 JavaScript 中准备数据,以便 Mustache 的插值和循环可以处理它。在您的情况下,这意味着在 EOL 上拆分您的字符串以获取一个数组:

// Adjust the regex to suit your data, this one is pretty loose.
var lines = string.split(/[\r\n]+/)
                  .map(function(line) { return { line: line } });

然后在 Mustache 中循环遍历该数组:

{{#lines}}
    {{line}}<br>
{{/lines}}
于 2013-11-14T18:44:42.353 回答
0

亩太短的答案是正确的。我只想补充一点,IE8(及更早版本)不支持 .map 函数。

我最终使用了一个循环来实现与我们需要支持 IE8 相同的效果:

var descriptionArray = description.split(/[\r\n]+/);
var descriptionLines = new Array();
for (var line = 0; line < descriptionArray.length; line++) {
    descriptionLines.push({ Line: descriptionArray[line] });
}
于 2013-11-14T23:45:43.913 回答