Aus*_*ang 5 javascript handlebars.js
从我的服务器返回的JSON响应包括一个长字符串(消息正文或多行注释).
典型的message.body可能看起来像这样:
"Hi!\r\n\r\nHow's life? Everything is well with me\r\n\r\nSincerely,\r\n\r\nAustin\r\n"
Run Code Online (Sandbox Code Playgroud)
现在使用把手,我就是这样嵌入的
<p>{{body}}</p>
Run Code Online (Sandbox Code Playgroud)
但是,这在html中呈现为:
<p>"Hi!
How's life? Everything is well with me
Sincerely,
Austin"</p>
Run Code Online (Sandbox Code Playgroud)
我怎样才能在每个html段落[p]标签中呈现每一行?在rails中,我会用这样的东西(以haml为单位)
- note.body.each_line do |x|
%p= x
Run Code Online (Sandbox Code Playgroud)
Ala*_*eay 10
你可以添加一个Handlebars'Helper'
http://handlebarsjs.com/expressions.html (向下滚动到助手)
例如
Handlebars.registerHelper('paragraphSplit', function(plaintext) {
var i, output = '',
lines = plaintext.split(/\r\n|\r|\n/g);
for (i = 0; i < lines.length; i++) {
if(lines[i]) {
output += '<p>' + lines[i] + '</p>';
}
}
return new Handlebars.SafeString(output);
});
Run Code Online (Sandbox Code Playgroud)
然后在模板调用中
{{paragraphSplit body}}
Run Code Online (Sandbox Code Playgroud)
Handlebars 不喜欢模板中的逻辑。您通常会在模板看到数据之前处理数据,如下所示:
var lines = "...".split(/(?:\r\n)+/);
Run Code Online (Sandbox Code Playgroud)
然后将该数组提供给模板:
var html = tmpl({ body: lines });
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您的模板将如下所示:
{{#each body}}
{{.}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
演示: http: //jsfiddle.net/ambiguously/Gbu5w/
| 归档时间: |
|
| 查看次数: |
2979 次 |
| 最近记录: |