2012-03-31 2 views
2

Я не могу понять, что я делаю неправильно в этом шаблоне.loop through collection with underscore

Вот мои данные:

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

просто хотел бы уточнить, что ОП не используется Backbone в этом примере так «Коллекция» * не * относятся к коллекции Backbone – IcedDante

ответ

2

Шаблон ищет ключевые «фильмы» по вашим параметрам, но не находит его! Вам нужно обернуть movies в контексте/Params вар, например:

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

Шаблон не может «увидеть» тот факт, что переменная контекста называется «кино». Вам нужно передать объект с фактическим свойством «фильмы».

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

Потрясающие! Спасибо! – Costa