2013-08-01 2 views
3

Поскольку я использую подчеркиванием шаблоны с рубином Я хочу изменить по умолчанию <% %> метки, которые, как рубин и подчеркнуть использование шаблонов, поэтому настройки I подчеркивание использовать другие теги, как это:Подчеркивание шаблон не работает как задумано

<script> 

    _.templateSettings = { 
     interpolate: /\[\=(.+?)\]/g, 
     evaluate: /\[(.+?)\]/g 
    }; 

</script> 

Так что мой шаблон не намного сложнее:

<script type="text/html" id='table_list_rows_template'> 
    [ 
    _.each(items,function(obj,key){ 

    var median = obj.md.toFixed(4) 
    ] 
    <tr> 
    <td>[= key + 1]</td> 
    <td>[= obj.name]</td> 
    <td>[= median]</td> 
    </tr> 

    [ }); ] 

Так что, когда я пытаюсь сделать HTML из шаблона, как это (tuples это список объектов и моя таблица имеет идентификатор table_list):

<script> 

    $(document).ready(function(){ 
     var template = $("#table_list_rows_template").html(); 
     $("#table_list tbody").html(_.template(template,{items:tuples})); 
    }); 

    </script> 
     </script> 

Так я получаю следующее сообщение об ошибке:

Uncaught SyntaxError: Unexpected token) 

И это должно быть на этой линии:

$("#table_list tbody").html(_.template(template,{items:tuples})); 

Но я не могу обнаружить ошибку. Что не так с моим кодом?

UPDATE:

Я попытался изменить от [], чтобы <? ?> как стиль PHP, потому что первый один напоминает яваскрипт массива, поэтому я решил, что может вызвать проблемы. См. Ниже:

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

<script type="text/html" id='table_list_rows_template'> 

    <? 
      _.each(items,function(obj,key, list){ 
    ?> 

    <tr id='response_[= obj.id]'> 
    <td></td> 
    <td><?= obj.name ?></td> 
    </tr> 

    <? }); ?> 

    </script> 

Не делал различия такой же ошибки.

ответ

1

Измените настройки своего шаблона на «.». к "[\ s \ S]":

_.templateSettings = { 
    interpolate: /\[\=([\s\S]+?)\]/g, 
    evaluate: /\[([\s\S]+?)\]/g 
}; 

http://jsfiddle.net/zBTMw/4/ с \ s \ S
http://jsfiddle.net/zBTMw/5/ с. (имеет ошибку)

Последняя версия underscore.js использует конструкцию [\ s \ S], в которой я получил эту идею.

Смежные вопросы