使用嵌入式Javascript语法直接输出到模板

时间:2012-01-07 02:35:25

标签: javascript backbone.js underscore.js underscore.js-templating

我正在使用Backbone和Underscore模板。我的代码中有一个JavaScript if()条件,如下所示:

<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()进入模板的关键部分。我正在努力实现的目标是什么? JavaScript可以内联输出吗?

1 个答案:

答案 0 :(得分:7)

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

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

或者您可以使用print

  

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

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)