这几天我一直在努力解决这个问题!
用例是我认为非常常见的用例。我有一个按钮 ( <button id="add-item">
),可将新项目元素 ( <div class="item">
) 添加到容器元素 ( <div id="list">
) 中,容器元素 ( ) 又应<form>
在面板 ( ) 中显示该项目的表单 ( <div id="panel">
)。我希望能够单击项目并让面板显示特定于项目的表单。
问题是唯一识别点击事件的项目是最后添加的项目;以前添加的项目视图都不会识别点击。
我之前在List
视图上设置了一个点击事件,.item
但 Backbone.js 社区的一位知名成员告诉我,项目视图确实应该自己处理点击,而不是将该责任委托给它的容器。
为了帮助可能有助于理解问题的您,我创建了一个极其精简且独立的示例来说明。您可以在以下三 (3) 个位置中的任何一个位置看到它:
此外,如果您对如何更好地构建此代码有任何建议,我会 100% 热情地听到它们;我是 Backbone.js 的新手,并不觉得我完全理解它的模式、实践和习语。
PS 我已经在 StackOverflow 上阅读了所有我能找到的内容,但我找不到任何解决问题的方法,所以如果你想以重复的形式结束我的问题,请帮我一个忙,并首先确保它实际上是重复的。
更新
我正在修复代码,但将错误this.$el.empty()
注释掉,以便其他有相同问题的人可以从中学习。感谢@sardine/@ tollmaz在 Twitter 上帮助我解决这个问题。