太折腾了,这事一定得记下来。
在backbone中,假设有10组人(GroupView),每个组又有很多人(PersonView),这样需要循环展示GroupView,同时需要在GroupView中调用PersonView的render方法来渲染人员页面片段的生成。代码如下:
that.$(".groupList").append(persionView.render().$el.html())
上述代码看起来是没问题的,但是问题出现了:
在PersonView中定义的event事件怎么也不会产生。也就是在PersonView中定义的视图事件怎么都没用。
后来把代码改了,如下所示:
that.$(".groupList").append(persionView.render().$el)
请注意上述代码去掉了最后的html()方法。其道理是不言自明的。如果把子视图生成的dom对象(此对象已经注册了各种event处理)换成对应的html纯文本代码append到父视图上,虽然展示是没问题,但事件全丢了。
本文详细阐述了在Backbone框架中,如何正确处理子视图渲染到父视图后,事件监听失效的问题。通过案例分析,提出解决方案并解释原因。
4354

被折叠的 条评论
为什么被折叠?



