AngularJS指令中有很多听众

时间:2012-11-28 12:51:46

标签: javascript angularjs

我知道任何DOM操作都应该通过指令而不是控制器来完成 到目前为止,我的手风琴指令中有大约10个听众,对添加/删除项目,激活等做出了反应。此外,我的控制器中有很多事件。

  • 我想知道(ab)使用这种互动是否可以?
  • 也许最好有许多指令处理1个侦听器和 使用它们传递某些参数?

对于这样一个模糊的问题感到抱歉,只想知道什么是真正的“棱角分明”的方式。

1 个答案:

答案 0 :(得分:1)

指令不应该彼此了解,除非它们之间存在某种层次结构或设计的交互行为,因此共享听众会很麻烦。即使他们彼此了解,也不习惯分享听众。如果您没有性能或内存问题,那么您就没有问题需要解决。

您是否曾尝试打开firefly或Chrome的开发人员工具,并查看为某些元素注册了多少个事件处理程序?地段!在整个DOM中,有数百个侦听器在任何给定时间都处于活动状态(不仅仅是AngularJs,请注意)。此外,您唯一要减少的是事件侦听器引用,而不是由于事件而执行的功能。

所以不要担心你现在拥有的那10个听众。但是,如果我们有一个具体的例子,我们可以帮助分配一些事件处理程序,使用$scope代替($watch$observe或某些属性另一个指令已经是设置)。


作为旁注,如果指令或控制器之间确实具有高内聚性:

  

你的指令/控制器中可能有太多的逻辑   你在很大程度上依赖$ scope来共享数据。在这些情况下   你应该考虑简化指令和移动   服务的状态依赖逻辑。避免使用over-reliance on Scope