1

我正在使用Backbone和Underscore模板。我在我的代码,一个JavaScript if()条件看起来是这样的:使用嵌入式JavaScript直接输出到模板语法

<div class='faces'> 
    <% if(somevalue === true) { %> 
     your face 
    <% } else { %> 
     my face 
    <% } %> 
</div> 

但是我觉得这句法尴尬,我真的想用类似于以下,即使它并没有实际工作(取代整个文本与文本):

<div class='faces'> 
    <% if(somevalue === true) { 
     document.write("your face"); 
    } else { 
     document.write("my face"); 
    } 
</div> 

我想要的字符串输出到模板中的确切位置它被称为。为了输出一个简单的变量EJS(和下划线)有

<%= somevalue %> 

一个伟大的语法凡=是关键的一部分document.write()的IT外面的模板。我试图完成什么? JavaScript可以内联输出吗?

回答

7

有几个选项,你可以使用<%= %>和三元:

<%= somevalue == true ? 'your face' : 'my face' %> 

或者你可以使用print

您还可以使用print从JavaScript代码中。这有时比使用<%= ... %>更方便。

var compiled = _.template("<% print('Hello ' + epithet); %>"); 
compiled({epithet: "stooge"}); 
=> "Hello stooge." 

,所以你可以这样做:

<% if(somevalue == true) { 
    print("your face"); 
} else { 
    print("my face"); 
} %> 

我假设if(somevalue = true)是一个错字,应该是if(somevalue == true)

+0

太棒了!打印是我需要的。三元组对于真实场景不够灵活,但要方便记住。我实际上并不知道JS中的任何其他命令输出到DOM。谢谢mu! – MikeMurko 2012-01-07 02:51:14

+0

@MikeMurko:'print'实际上是特定于Underscore模板的,并且正好适合您的情况。 – 2012-01-07 02:57:48

+0

哦,古怪。谢谢 :) – MikeMurko 2012-01-07 04:37:24