我正在使用Brunch和Backbone.js構建應用程序,該應用程序包含嵌套菜單。我創建了一個MenuItemModel和一個MenuItemsCollection,它們都擴展了相應的Backbone-base-objects。如何在Backbone.js中使用嵌套視圖解決循環依賴關係
另外我有一個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 =新MenuItemsView」的結果是「未捕獲的ReferenceError:MenuItemsView沒有定義「在我的JS控制檯中。
我的問題是是否有任何方法可以解決這個問題?我可以在後面的代碼中通過遞歸函數創建嵌套菜單,但這看起來並不像我想的那樣整齊和獨立。另外,我在SOF上發現了以下兩個實例,其中人們建議使用完全像上面代碼中一樣的嵌套視圖。我究竟做錯了什麼?
https://stackoverflow.com/a/6476507
Nesting Views within Views in backbone js
你有沒有嘗試'類MenuItemsView擴展Backbone.View'而不是'類exports.MenuItemsView擴展Backbone.View'? – Atinux