【问题标题】:Tightly coupled controllers architecture紧耦合控制器架构
【发布时间】:2014-05-28 15:56:48
【问题描述】:

开始使用 Angular,我正在尝试实现一个工具栏。

应用程序由构成网页的菜单栏、视图和工具栏构成。

此工具栏具有一般用途(提供帮助功能和错误显示),但为特定视图添加了一些控制功能(保存、取消、编辑、删除等)的按钮。

在当前设计中,视图和工具栏是同级的。视图控制器取决于视图包含的数据,它可以具有不同的功能。 (例如:一个视图可能允许数据导入,所以工具栏中会有导入功能,而其他视图可能没有。)

我的问题是我无法想象视图和工具栏之间的通信结构。因为控制器是紧密耦合的,所以服务似乎无法解决通信问题。

有什么帮助吗?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    你可以:

    • 使用 rootScope 在不同控制器/服务之间共享数据 (明智地使用)
    • 您可以使用发布和订阅应用程序事件 $on、$broadcast 和 $emit

    我使用并帮助过的一个很好的策略是将所有应用事件定义保存在一个名为 AppEvents 之类的服务中,这样您就可以轻松跟踪它们并从一个地方控制哪些事件导致了哪些事件。

    Here is one nice article to read that expands more on this topic

    【讨论】:

    • 我喜欢将事件保存在服务中的部分。我现在正在研究另一种类似的方式。有一些变量的服务。然后在视图和工具栏上查看这些变量。这行得通吗?
    • 是的,他们的控制器可以监听事件,因为他们都注入了事件服务并且可以使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多