当复合视图的集合没有模型时,我使用带有 emptyView 属性的 Marionette 复合视图来呈现简单模板。emptyView 在我的应用程序的多个位置都可以正常工作,但由于某种原因,在一个视图中,emptyView 在页面上呈现了两次。
我最初的想法是视图正在重新渲染,而不是在同步集合时自行删除。初始化函数中的 console.log 显示初始化只被调用一次。
class AllLists extends Backbone.Marionette.CompositeView
itemView: List
emptyView: NoLists
template: AllListsTemplate
className: 'lists'
initialize: (options) ->
@collection.fetch()
console.log 'lists ', @collection, @model
class NoLists extends Backbone.Marionette.ItemView
template: NoListsTemplate
tagName: 'li'
className: 'no-lists'
正如你所看到的,这里没有什么太疯狂的事情。空列表模板只是一个简单的 h4 标签,其中包含一些文本。
关于可能导致这种情况的任何想法?