我已经做了几个小时的额外研究,但我仍然找不到一个好的模式来解决我认为是常见问题的问题。
我正在开发一个 .Net MVC2 应用程序。我们的应用程序由一个主页组成,然后是多个部分视图(包含的页面),每个部分视图对应于一个由HTML结构和JS-jQuery胆量组成的小部件
我们的一些小部件相互之间有丰富的交互,所以我们当然使用 jQuery 的事件绑定来达到以下效果:
数据摘要小部件
$(document).bind("DataUpdated", summaryobject.updateTotals());
数据操作小部件
$(document).trigger("DataUpdated");
我们遇到的问题是,当用户导航到应用程序的某些部分时,这些小部件 (HTML/DOM) 会从页面中删除并替换为新的部分视图集。当用户导航回来时,HTML(视觉表示)与创建双重绑定的 jQuery 绑定一起重新加载。
到目前为止,我的解决方案对我来说似乎很蹩脚。
(1) 绑定到绑定所针对的 DOM 对象:
$("#summaryobject").bind("DataUpdated", summaryobject.updateTotals());
这样做的问题是,然后我的触发小部件需要知道要触发的 DOM 对象:$("#summaryobject")
哪种方式违背了目的。
(2) 创建一个EventBus对象来追踪谁绑定了哪些事件,并且只允许事件绑定一次。我遇到的问题是,在存储/绑定事件时,我无法跟踪谁创建了它,所以如果需要,我无法取消注册它……也许未注册的事件不是必要的事件。
其他人使用什么模式来管理自定义事件?