Я пытаюсь следовать учебному пособию Backbone Rails, и я застреваю, пытаясь отобразить мою коллекцию ссылок в CompositeView, а не вложенность. Я подозреваю, что учебник сильно устарел, но поскольку у меня пока нет навыков магистральной работы, я не могу указать проблему. Пожалуйста, ознакомьтесь со следующим кодом:Поведение Marionette CompositeView
Создание коллекции навигационных ссылок.
@TestApp.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->
class Entities.Navigation extends Backbone.Model
class Entities.NavigationCollection extends Backbone.Collection
model: Entities.Navigation
API =
getLinks: ->
new Entities.NavigationCollection [
{ name: "one" }
{ name: "two" }
{ name: "three" }
{ name: "four" }
{ name: "five" }
]
App.reqres.setHandler "navigation:entities", ->
API.getLinks()
Основной навигационный файл.
@TestApp.module "NavigationUnit", (NavigationUnit, App, Backbone, Marionette, $, _) ->
@startWithParent = false
API =
listNavigation: ->
NavigationUnit.List.Controller.listNavigation()
NavigationUnit.on "start", ->
API.listNavigation()
Контроллер, где я передаю коллекцию на вид.
@TestApp.module "NavigationUnit.List", (List, App, Backbone, Marionette, $, _) ->
List.Controller =
listNavigation: ->
links = App.request "navigation:entities"
navigationView = @getNavigationView links
App.navRegion.show navigationView
getNavigationView: (links) ->
new List.Navigation
collection: links
И вид.
@TestApp.module "NavigationUnit.List", (List, App, Backbone, Marionette, $, _) ->
class List.NavigationLinks extends Marionette.ItemView
template: "navigation/list/templates/_links"
tagName: "li"
class List.Navigation extends Marionette.CompositeView
template: "navigation/list/templates/list_navigation"
itemView: List.NavigationLinks
itemViewContainer: "ul"
Содержание шаблона ItemView - %a{:href => "#"}= @name
. И в CompositeView есть базовая структура обертки с тегом %ul
. Теперь происходит то, что CompositeView отображает шаблон как ожидалось, но он не заполняет %ul
с помощью элемента itemView. Вместо этого он создает количество дивов равно количество моделей в коллекции (пять в данном случае) и вставляет там целые шаблоны оболочки, так это выглядит следующим образом:
#navRegion
.div
.navigation-wrapper
.navigation-content
%ul
.div
.navigation-wrapper
// entire template
.div
.navigation-wrapper
// entire template
//etc +3 divs
Что я здесь делаю неправильно?
В чем проблема? Ошибки брошены? Это не делает? – Creynders
Проблема в том, что мой ItemView игнорируется, а вместо #navRegion заполняется копии шаблона CompositeView, как если бы они были моделями. Вот как это выглядит как http://i.imgur.com/dLWJEPp.png –