Подтвердить что ты не робот

Просмотры в Просмотров? Как создать списки элементов с помощью Backbone.js?

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

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

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> в списке с помощью собственного шаблона вида +, чтобы я мог фильтровать их по автору.

4b9b3361

Ответ 1

В то время как это, безусловно, можно написать так, вещи могут быть запутаны, если у вас есть шаблоны, вложенные вложенные шаблоны, ad infinitum...

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

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