2016-01-06 25 views
0

我在Node.js中使用JsRender
如果給出的示例數據:使用JsRender時不輸出空行

{ 
    "items": [ 
     {"name":"Alf", display:false}, 
     {"name":"Bruno", display:true} 
    ] 
} 

和模板:

{{* index=0; }} 
{{for items}} 
{{if display}} 
name[{{*: index; }}] = "{{: name }}"; 
{{* index++; }} 
{{/if}} 
{{/for}} 

我得到:

//empty line 
//empty line 
//empty line 
//empty line 
//empty line 
name[0] = "Bruno"; 
//empty line 
//empty line 
//empty line 

正如你可以看到,有一個空行廢話負荷,爲我不輸出任何內容的模板的每一行。
有沒有辦法阻止JsRender輸出這些空行?

回答

1

JsRender將輸出模板中的任何空白字符。

它不能猜測你想要哪些,哪些你不想要。 (幽默地說,人們可以說:把垃圾放進去,弄糟了!!)。

因此,例如:

{{for items}}{{:name}}{{/for}} 

將輸出

"AlfBruno" 

{{for items}}{{:name}} {{/for}} 

將輸出

"Alf Bruno " 

{{for items}}{{:name}} 
{{/for}} 

將輸出

"Alf\nBruno\n" 

所以,如果你不希望任何新行的一切,你可以寫

{{* index=0; }}{{for items}}{{if display}}name[{{*: index; }}] = "{{:name}}";{{* index++; }}{{/if}}{{/for}} 

或者如果你喜歡

{{* index=0; 
}}{{for items 
}}{{if display 
}}name[{{*: index; }}] = "{{:name}}";{{* index++; 
}}{{/if}}{{/for}} 
+0

感謝您的回答,我明白這一點。但是,如果模板中不顯示任何內容,則不會輸出新線條。否則,它會使輸出中出現新行,或模板非常難以閱讀。它可以用某種標誌來控制,類似於'views.settings.allowCode = true'。如果你對此感到滿意,我可以分解這個項目,在這個項目上工作並提交一個PR。 –

+0

現在我決定做這樣的事情:'template.render(data).replace(/ \ n +/g,「\ n」)' –

+0

實際上'{{* ...}}',例如,沒有渲染任何東西 - 沒有新行,沒有任何東西。但是如果你在它之前或之後添加一個換行符,那麼它就是模板的一部分,並且會被輸出。 – BorisMoore

相關問題