【发布时间】:2012-05-22 14:09:42
【问题描述】:
我正在使用backbone.marionette 并有以下CollectionView ItemView 组合:
PlansListItemView = PlansApp.ItemView.extend
tagName: "tbody"
template: "#plansRow"
events:
'click th.expander': 'expandDocuments'
expandDocuments: (e) =>
# do stuff
PlansCollectionView = PlansApp.CollectionView.extend
tagName: "table"
itemView: PlansListItemView
我从嵌入在页面上的初始 json 集合创建视图。事件哈希中的事件完美运行。
然后在下拉更改事件中,我在集合上调用 fetch() 以检索新的对象集合。 DOM 被重建,但事件处理程序没有被重新附加/
有人知道为什么会发生这种情况吗?
【问题讨论】:
-
在重建 DOM 后你的 th 有没有“expander”类?
-
@Brendan 是的,类是在模板中指定的。
-
您可以发布您的项目视图模板吗?
#plansRow? -
好的...我在想它不起作用的唯一原因是因为 jquery 找不到选择器。所以另一个问题......当你第一次渲染时,你在控制台上看到任何错误吗?我问的原因是因为我们最近遇到了点击不起作用的情况,结果发现有错误。它并没有阻碍渲染,但事情就是行不通。
-
我突然想到,一旦你重新渲染,你可以调用delegateEvents来更新DOM事件钩子。试试看,看看会发生什么。