Вывод напрямую в шаблон со встроенным синтаксисом Javascript - PullRequest
1 голос
/ 07 января 2012

Я использую 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 Ответ

7 голосов
/ 07 января 2012

Есть несколько вариантов, вы можете использовать <%= %> и троичный:

<%= 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).

...