我知道任何DOM操作都应该通过指令而不是控制器来完成 到目前为止,我的手风琴指令中有大约10个听众,对添加/删除项目,激活等做出了反应。此外,我的控制器中有很多事件。
对于这样一个模糊的问题感到抱歉,只想知道什么是真正的“棱角分明”的方式。
答案 0 :(得分:1)
指令不应该彼此了解,除非它们之间存在某种层次结构或设计的交互行为,因此共享听众会很麻烦。即使他们彼此了解,也不习惯分享听众。如果您没有性能或内存问题,那么您就没有问题需要解决。
您是否曾尝试打开firefly或Chrome的开发人员工具,并查看为某些元素注册了多少个事件处理程序?地段!在整个DOM中,有数百个侦听器在任何给定时间都处于活动状态(不仅仅是AngularJs,请注意)。此外,您唯一要减少的是事件侦听器引用,而不是由于事件而执行的功能。
所以不要担心你现在拥有的那10个听众。但是,如果我们有一个具体的例子,我们可以帮助分配一些事件处理程序,使用$scope
代替($watch
或$observe
或某些属性另一个指令已经是设置)。
作为旁注,如果指令或控制器之间确实具有高内聚性:
你的指令/控制器中可能有太多的逻辑 你在很大程度上依赖$ scope来共享数据。在这些情况下 你应该考虑简化指令和移动 服务的状态依赖逻辑。避免使用over-reliance on Scope。