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