Backbone.js: не отображаются модели
Я хочу показать простой список языков.
class Language extends Backbone.Model defaults: id: 1 language: 'N/A' class LanguageList extends Backbone.Collection model: Language url: '/languages' languages = new LanguageList class LanguageListView extends Backbone.View el: $ '#here' initialize: -> _.bindAll @ @render() render: -> languages.fetch() console.log languages.models list_view = new LanguageListView
languages.models
кажется пустым, хотя я проверил, что запрос пришел, и языки были извлечены. Я что-то упускаю?
Благодарю.
- Как вы ограничиваете исполнение CoffeeScript (или JavaScript) конкретным контроллером и действием в Rails 3.1?
- Как повернуть 3D-объект на оси three.js?
- Как захватить данные из JSON в CoffeeScript
- Coffeescript: Элемент Array сопоставляет другой массив
- Преобразование проекта CoffeeScript в JavaScript (без каких-либо ограничений)?
- Использование CoffeeScript в рабочей среде
- CoffeeScript: Getter / Setter в инициализаторах объектов
- Как использовать экзистенциальный оператор CoffeeScript для проверки некоторых свойств объекта для неопределенного?
- Аутентификация пользователя Node.js с использованием паспорта
- Чистый способ удалить элемент из массива javascript (с помощью jQuery, coffeescript)
- Причина этого самоисключения анонимного варианта функции
- Интеграция CoffeeScript с Eclipse?
- Может ли phantomjs работать с node.js?
Вызов fetch
асинхронен:
Fetch
collection.fetch([options])
Извлеките набор моделей по умолчанию для этой коллекции с сервера, сбросьте коллекцию, когда они прибудут. Хэш параметров имеет
success
и обратные вызовыerror
которые будут переданы(collection, response)
качестве аргументов. Когда данные модели возвращаются с сервера, коллекция сбрасывается.
В результате вы вызываете ваши console.log languages.models
до того, как вызов languages.fetch()
получил что-то обратно с сервера.
Поэтому ваш render
должен выглядеть примерно так:
render: -> languages.fetch success: -> console.log languages.models @ # Render should always return @
Это должно получить что-то на консоли.
Было бы @render
вызвать languages.fetch
для initialize
и привязки @render
к событию reset
коллекции; То вы можете поместить вещи на страницу, когда коллекция будет готова.
Кроме того, с CoffeeScript редко требуется _.bindAll @
. Вы должны создать соответствующие методы с помощью =>
.