【问题标题】:Underscore template doesn't work as intended下划线模板无法按预期工作
【发布时间】:2013-08-01 12:20:19
【问题描述】:

由于我在 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}));

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

更新:

我尝试将 [] 更改为 &lt;? ?&gt; 类似 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>

没有区别同样的错误。

【问题讨论】:

    标签: javascript jquery underscore.js


    【解决方案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] 结构,这就是我的想法。

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 2020-07-14
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      相关资源
      最近更新 更多