Angular-styleguide: 将 $emit、$broadcast 或 $on 移动到工厂?

创建于 2015-05-12  ·  8评论  ·  资料来源: johnpapa/angular-styleguide

约翰,在 Y031 中,您提到了以下内容:

例如,当使用 $emit、$broadcast 或 $on 发布和订阅事件时,请考虑将这些用途移动到工厂并从控制器调用。

您能否扩展一下如何实现这一点? 代码示例会很好!

question

所有8条评论

我也想知道这一点,并找到了以下 stackOverflow 问题/答案: http ://stackoverflow.com/questions/14056874/how-to-emit-events-from-a-factory

就角度而言,我是相当初学者,所以如果这是不好的做法,请告诉我。 :)

我认为这也取决于您是在纯角度项目还是遗留/混合项目中。
即您想在 Angular 框架内外共享相同的事件
将 pub/sub 变成工厂使替代实现更容易替换 $emit、$broadcast。
例如http://jonathancreamer.com/an-angular-event-bus-with-postal-js/

我在理解Y031 中的以下句子时也遇到了一些麻烦:

仅在需要时才考虑在控制器中使用 $scope。 例如,当使用 $emit、$broadcast 或 $on 发布和订阅事件时,请考虑将这些用途移动到工厂并从控制器调用。

那么上面这句话的结论是完全避免使用工厂进行广播? 如果是这样,我会建议一个不同的公式。

我不是在考虑控制器间的通信,而是在考虑诸如登录/注销之类的主要状态变化。 既然我可能不得不通知几乎所有组件,如果感觉像是广播的适当任务?

如果我理解正确,我认为您误解了这个@sebastianhaas。 样式指南中的这段话建议将$emit$broadcast$on的用法移至工厂,而不是将用法 _with_ 替换为工厂。

感谢您的回答@zachlysobey! 是的,但是您将如何实现这一目标? 假设我想在某些广播中更新控制器中的值。 如果我将那些$on移到工厂,我想知道如何再次通知控制器。

让我澄清一下......我在那里有一个令人困惑的句子。 关键是只在需要时使用 $scope 。 这就是你必须有一个范围来处理工作的时候。 这包括广播或发射。 当且仅当您需要发送一条消息时,这些在控制器中是可以的。 但您可能还想考虑其他选择。

我在这里要小心,因为我也想不鼓励在控制器中使用 scope.apply。

我删除了这句话。

非常感谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jusefb picture jusefb  ·  9评论

jansepke picture jansepke  ·  12评论

ibbatta picture ibbatta  ·  53评论

philmerrell picture philmerrell  ·  28评论

Bekt picture Bekt  ·  13评论