Я создаю приложение, используя Brunch и Backbone.js, которое должно включать вложенные меню.Я создал MenuItemModel и MenuItemsCollection, которые расширяют соответствующие базовые базовые объекты.
Кроме того, у меня есть MenuItemView (для отдельных элементов), а также MenuItemsView (для коллекций элементов).В упрощенном виде они выглядят так:
class MenuItemView extends Backbone.View
tagName: 'li'
initialize: (options) ->
if @model.get('children')?
childCollection = new MenuItemList
childView = new MenuItemsView
el: $('<ul>').appendTo @el
collection: childCollection
class exports.MenuItemsView extends Backbone.View
initialize: (options) =>
@collection.bind 'add', @add
add: =>
view = new MenuItemView { model: @collection.last() }
Как видите, между двумя представлениями существует циклическая зависимость, и не совсем неожиданно, строка "childView = new MenuItemsView" приводит к "Uncaught ReferenceError: MenuItemsView не определен "в моей JS-консоли.
Мой вопрос, есть ли способ решить эту проблему?Позднее в коде я могу создавать вложенные меню с помощью рекурсивной функции, но это не кажется таким аккуратным и самодостаточным, как хотелось бы.Кроме того, я обнаружил следующие два случая в SOF, где люди предлагают использовать вложенные представления в точности как в коде выше.Что я делаю не так?
https://stackoverflow.com/a/6476507
Вложенные представления в представлениях в магистрали js