我无法弄清楚我在这个模板中做错了什么。
这是我的数据:
var movies = [
{
"title": "The Matrix",
"characters": ['neo', 'trinity', 'morpheous', 'agent smith'],
"year": 2001
},
{
"title": "The Simpsons Movie",
"characters": ['homer', 'marge', 'bart', 'lisa', 'maggie'],
"year": 20010
}
];
这是我的模板:
<script id="template" type="template/underscore">
<% _.each(movies, function (movie) { %>
<h1><%-title%></h1>
<ul>
<% _.each(characters, function(name) { %>
<li><%-name%></li>
<% }); %>
</ul>
<p><%-year%></p>
<% }); %>
</script>
这是汇编:
var template = $.trim( $('#template').html() );
var content = _.template(template, movies);
console.log(content);
我收到错误:电影没有定义。任何帮助都会很棒!
答案 0 :(得分:2)
模板正在寻找参数中的关键'电影'但未找到它!您需要将movies
包装在context / params var中,例如:
var content = _.template(template, {movies: movies});
答案 1 :(得分:1)
模板无法“看到”您的上下文变量被命名为“movies”的事实。您需要传递一个名为“movies”的实际属性的对象。
var context = {movies: movies};
var content = _.template(template, context);