3

由于我将下划线模板与 ruby​​ 一起使用,因此我想更改<% %>ruby​​ 和下划线模板都使用的默认标签,因此我将下划线设置为使用其他标签,如下所示:

<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是对象列表并且我的表有 id 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}));

但我无法发现错误。我的代码有什么问题?

更新 :

我试图从 [] 更改为<? ?>喜欢 php 样式,因为第一个提醒了 javascript 数组,所以我认为这可能会导致问题。见下文 :

_.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>

没有区别同样的错误。

4

1 回答 1

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] 构造,这就是我的想法。

于 2013-08-01T13:10:37.360 回答