2011-01-23 3 views
12

Я пытаюсь создать список предметов (например, книги), и я хотел бы затем разрешить пользователю фильтровать этот список (например, по автору). Я ожидал бы, что каждый элемент в списке будет иметь свое собственное представление и что сам список также будет иметь представление. Однако я не могу «видеть», как они сочетаются друг с другом в Backbone.Просмотров в Просмотров? Как создать списки элементов с помощью Backbone.js?

В настоящее время мой код выглядит следующим образом (кофе-скрипт):

class Book extends Backbone.Model 

class BookList extends Backbone.Collection 
    model: Book 
    url: "/library/books.json" 

books = new BookList 

class BookListView extends Backbone.View 
    initialize: -> 
    @template = _.template(''' 
     <ul> 
     <% books.each(function(book){ %> 
      <li><%= book.get('title') %>, <%= book.get('author') %></li> 
     <% }); %> 
     </ul> 
    ''') 
    @render 

    render: -> 
    template = @template 
    books.fetch success: -> jQuery("#books").html(template({'books': books})) 

То, что я хотел бы понять, как создать каждый <li> элемент в списке с собственным видом + шаблон так что я могу фильтровать их по автору.

ответ

11

Хотя это, конечно, можно написать это таким образом, вещи могут получить запутанную, если у вас есть шаблоны гнездования просмотры гнездование шаблоны, бесконечность ...

Вместо этого, почему не вставить свои взгляды на сайте в список:

render: -> 
    $(this.el).html this.template() 
    bookHTML = for book in Books 
    (new BookView model: book).render().el 
    this.$('.book_list').append bookHTML 
+0

Спасибо! Как использовать методы фильтра «Подчеркивание» для фильтрации книг по автору? –

+0

Также вы могли бы привести пример того, как на самом деле написать шаблон, вложенный в представление, вложенное в шаблон? На всякий случай, если бы кто-то хотел достичь такой структуры - больше для учебных целей, чем для фактического использования. :) –

+0

<%= renderTemplate(moreData) %>
jashkenas

Смежные вопросы