2012-03-31 65 views
2

我无法弄清楚我在这个模板中做错了什么。通过收集与下划线循环

这里是我的数据:

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

只想说OP没有使用骨干在这个例子中如此“集”不*不*指骨干集合 – IcedDante 2014-11-27 16:00:15

回答

2

该模板正在寻找您的参数中的关键'电影',但没有找到它!你需要在上下文/ PARAMS VAR包movies,如:

var content = _.template(template, {movies: movies}); 
1

模板无法“看到”的事实,你的上下文变量被命名为“电影”。您需要传递一个名为“movies”的实际属性的对象。

var context = {movies: movies}; 
var content = _.template(template, context); 
+0

真棒澄清!非常感谢! – Costa 2012-03-31 19:57:26