Подтвердить что ты не робот

Каждый цикл в шаблоне underscore.js

Я делаю что-то не так, но я не вижу этого! Im пытается зациклить массив в шаблоне подчеркивания. Это не работает, хотя я чего-то не хватает. Здесь мой код, мои шаблоны работают отлично, это просто файл _.each, который прослушивает:

<script type="text/template" id="PageContent">
    <div class="col2">
        <@ _.each([0,1,2,3,4], function(i) { @>  <p><@ i @></p> <@ }); @>
    </div>    
</script>

Я также сделал некоторые настройки шаблона, например:

_.templateSettings = {
    interpolate: /\<\@(.+?)\@\>/gim
};
4b9b3361

Ответ 1

Поскольку вы только определили регулярное выражение интерполяции в настройках настраиваемого шаблона, подчеркивание не знает, когда оценивать выражения. Когда вы определяете настраиваемые параметры шаблона, вам нужно определить и провести различие между интерполяцией и оценкой. Из документа подчеркивания template():

Определите интерполированное регулярное выражение и (необязательно) оценить регулярное выражение для соответствия выражениям, которые необходимо вставлять и оценивать соответственно. Если не задано регулярное выражение, ваши шаблоны будут способны только интерполировать значения.

В стандартном шаблоне (без пользовательских настроек) разница заключается в оценке: <% %> и интерполяции значений: <%= %>.

Итак, например, ваш шаблон должен быть (со стандартными настройками шаблона):

<% _.each([0,1,2,3,4], function(i) { %>  <p><%= i %></p> <% }); %>

Если вы хотите продолжить использование настраиваемых параметров, вам необходимо также определить регулярное выражение для оценки в _.templateSettings. Основываясь на ваших вопросах и комментариях, например:

   _.templateSettings = {
      interpolate: /\<\@\=(.+?)\@\>/gim,
      evaluate: /\<\@(.+?)\@\>/gim
  };

И затем обновите свой шаблон, чтобы использовать форму оценки вокруг блоков кода и форму интерполяции вокруг значений, например:

<script type="text/template" id="pageContent">
    <div class="col2">
        <@ _.each([0,1,2,3,4], function(i) { @>  <p><@= i @></p> <@ }); @>
    </div>    
</script>

источник: http://documentcloud.github.com/underscore/#template