Немного странный...
У меня есть коллекция:
class Store.Collections.Product extends Backbone.Collection
url: '/api/products'
model: Store.Models.Product
С видом:
class Store.Views.Origin extends Backbone.View
initialize: ->
@collection = new Store.Collections.Product()
@collection.fetch()
@model.bind('change:formatted', @render, this);
@render()
events:
'change [name=origin]': 'setOrigin'
el: =>
@options.parent.$('.origin-input')[0]
template: JST["backbone/templates/shapes/product"]
render: ->
$this = $(this.el)
$this.html(@template(model: @model.toJSON(), errors: @model.errors))
console.log(@collection)
@collection.each(@appdenDropdown)
@delegateEvents()
this
appdenDropdown: (product) ->
console.log("append trigger")
#view = new Store.Views.Products(model: product)
#$('#history').append(view.render().el)
с шаблоном:
<div id="history"></div>
Коллекция работает...
console.log(@collection)
показывает данные! Однако
@collection.each(@appdenDropdown)
Ничего не делает, не ошибается или через что-то. Это просто ничего не делает. Я пытаюсь извлечь данные из коллекции! Но не будет...
$this = ...
, когда у ВАС ЕСТЬthis.$el
. Я предлагаю прочитать документацию по backbone.js. - person jakee   schedule 19.07.2012asynchronous
, и вы визуализируете свое представление в методе инициализации, вероятно, до возврата выборки, поэтому коллекция пуста. console.log равенwtfsynchronous
, поэтому он независимо регистрирует коллекцию как заполненную. Что вам нужно сделать, так это привязать метод рендеринга к событию сброса коллекции, чтобы убедиться, что представление отображается также после заполнения коллекции. - person jakee   schedule 19.07.2012