Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 模板中未定义的局部变量_Backbone.js - Fatal编程技术网

Backbone.js 模板中未定义的局部变量

Backbone.js 模板中未定义的局部变量,backbone.js,Backbone.js,我将跟随本教程(仅限法语),它将下划线模板与Backbonejs结合使用 教程要求将此模板放在下面的索引文件中 <script type="text/template" id="doc-template"> <span><%= id %></span> <span><%= title %></span> <span>&

我将跟随本教程(仅限法语),它将下划线模板与Backbonejs结合使用

教程要求将此模板放在下面的索引文件中

      <script type="text/template" id="doc-template">
            <span><%= id %></span>
            <span><%= title %></span>
            <span><%= test %></span>
            <span><%= keywords %></span>
       </script>


   <div id='doc-container'></div>
更新

当我按照集合视图的教程说明操作时,我也遇到了同样的问题。它为下划线的每个方法抛出一个错误

undefined local variable or method `_' for #<#<Class:0x007fd9c3a133b8>:0x007fd9c2c78a78>
未定义的局部变量或方法“%u1”#
index.html.erb中的模板

<script type="text/template" id="docs-collection-template">
    <ol>
      <% _.each(docs, function(doc) { %>
        <li><%= doc.id %> : <%= doc.title %></li>
      <% }); %>
    </ol>
</script>

  • :

  • 问题在于下划线使用与ERB相同的模板语法,因此存在冲突。您需要告诉下划线使用不同的语法。从下划线文档:

    如果您不喜欢ERB样式的分隔符,您可以更改 下划线的模板设置,以使用不同的符号来设置 内插代码。定义插值正则表达式以匹配表达式 这应该是逐字插入的,一个要匹配的转义正则表达式 应在HTML转义后插入的表达式,以及 计算正则表达式以匹配应在不使用 插入到结果字符串中。您可以定义或省略任何 三者的结合。例如,执行Mustache.js样式 模板制作

    因此,在编译模板之前,在JavaScript代码的某个地方添加以下代码:

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

    然后,在模板中有
    的任何地方,将其更改为
    {}
    ,将
    更改为
    {=}
    ,将
    更改为
    {-}

    问题是下划线使用的模板语法与ERB相同,因此存在冲突。您需要告诉下划线使用不同的语法。从下划线文档:

    如果您不喜欢ERB样式的分隔符,您可以更改 下划线的模板设置,以使用不同的符号来设置 内插代码。定义插值正则表达式以匹配表达式 这应该是逐字插入的,一个要匹配的转义正则表达式 应在HTML转义后插入的表达式,以及 计算正则表达式以匹配应在不使用 插入到结果字符串中。您可以定义或省略任何 三者的结合。例如,执行Mustache.js样式 模板制作

    因此,在编译模板之前,在JavaScript代码的某个地方添加以下代码:

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

    然后,在模板中有
    的任何地方,将其更改为
    {}
    ,将
    更改为
    {=}
    ,并将
    更改为
    {-}
    ,您可以使用
    。Rails的输出将是

    您可以使用
    。Rails的输出可能是@Soldier.moth的重复,因为这个问题实际上不是关于下划线模板的,可能重复的@Lukas您的答案比另一页提供更多信息可能重复的@Soldier.moth它不是重复的,因为该问题与下划线模板无关。实际上,可能重复的@Lukas您的答案比另一页提供更多信息
    _.templateSettings = {
        interpolate : /\{\{=(.+?)\}\}/g,
        escape : /\{\{-(.+?)\}\}/g,
        evaluate: /\{\{(.+?)\}\}/g,
    };