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