基本上,我试图将 CompositeView 呈现为带有表头的简单四列列表,其中集合中的每个模型都呈现为 a 并附加到 . 我正在密切关注Derick 的一个例子,只有一点点变化,但不幸的是得到了一些非常奇怪的结果。
视图不是渲染每个 itemView,而是引用自身并为集合中的每个项目重新渲染,生成一个新的表和表头。在此之前,它本身是在渲染复合视图。
我有一个itemView,它的模板是一组项目,以及一个引用它的compositeView,它是一个表
复合视图:
class App.module('Views.Parts').Index extends Backbone.Marionette.CompositeView
template: 'parts/index'
itemView: App.Views.Parts.Part
tagName: 'table'
itemViewContainer: 'tbody'
appendHtml: (collectionView, itemView, index)->
collectionView.$el.append(itemView.el)
项目视图:
class App.module('Views.Parts').Part extends Backbone.App.ItemView
tagName: 'tr'
template: 'parts/part'
events:
"click .destroy": "destroy"
destroy: (e) ->
e.preventDefault()
@model.destroy()
onRender: ->
@stickIt()
控制器
class App.Controllers.Parts
constructor: ->
@parts = new App.Collections.Parts
@parts.reset(App.parts)
App.parts = null
showView: (view)->
App.mainRegion.show view
index: ->
view = new App.Views.Parts.Index
collection: @parts
@showView view
我还听说有必要在 CompositeView 之前声明一个 ItemView ——但是,由于它是 Marionette Rails 项目,因此视图实际上位于不同的目录中。我是否必须宣布他们的订单或以另一种方式将他们相互绑定?