【问题标题】:When to use module vs. controller何时使用模块与控制器
【发布时间】:2014-05-15 19:55:53
【问题描述】:

我是 angluarjs 的新手,正在尝试构建示例应用程序。

此应用程序分为 3 个部分/部分:

A.) 地图

B.) “收到”-区域

C.) “发送”区域

每个部分都有自己的布局/视图区域,不能同时显示。

在 B.) 部分中,您可以通过单击或自动从服务器加载信息,这些信息将在“B.)”部分中显示为文本,在“A.)”部分中显示为地图标记。

此外,您可以在“A.)”部分内单击以设置新标记。

在“C.)”部分有一个发送按钮,用于从“A.)”获取新标记,以便将其发送到服务器。

目前:所有部分(A、B、C)都是角度模块/自己的应用程序。

但我不知道这是否是正确的方法/最佳做法。

另一种方式可能是整个页面的单个模块和 3 个控制器(A、B、C),它们处理 A、B 和 C 部分的逻辑。

angularjs中的正确方法是什么?

【问题讨论】:

    标签: angularjs model-view-controller architecture


    【解决方案1】:

    根据您的描述,我建议将其设计为单个 AngularJS 应用程序,每个视图都有单独的控制器。听起来您会受益于使用角度服务来处理客户端业务逻辑并缓存视图可以使用的任何共享数据/模型。 Angular 的最佳实践是保持控制器相当精简并只专注于视图设置/绑定和编排对服务的访问。

    【讨论】:

    • 目前我在部分/模块 A 完全加载/准备好之后启动/引导部分 B。那么在“控制器 A”(地图)加载并准备好之后,我将如何处理“控制器 B”的运行?默认行为是每个控制器在启动模块时运行,对吧?
    • 当遇到任何指定控制器的指令时,控制器将运行。我在这里做了一些假设,但如果您的数据都是同一个域的一部分,您可以使用角度服务封装对数据的访问并将服务注入您的控制器......您可以将每个部分/部分包装在一个ng-View 指令及其关联的控制器,并根据需要使用角度路由在视图之间导航。该服务将在您的控制器实例之间维护状态,并且您可以在路由中放置逻辑以确保必要时正确流动。
    • 我现在选择我自己的指令“何时创建新模块与控制器”。但是 +1 提示使用服务在控制器/模块之间共享。谢谢。
    【解决方案2】:

    在寻找一些灵感的方法之后,我决定实现以下想法:

    对于所有自制代码,我为整个应用程序使用一个模块,而对于与外部插件和服务捆绑在一起的所有外部事物,我使用不同的模块。这意味着:每个“服务插件包”的 pne 模块(如 google API 和 angular-google-maps 插件)

    这样我可以切换模块,如果外部服务不工作等。

    看看我在问题中的例子,这意味着:

    应用程序 A 部分:地图和所有特定于地图的事物(设置新标记、绘制圆圈等)都是洞察地图模块。如果我决定使用开放街道地图而不是谷歌地图,我将插入一个新的地图模块

    应用程序 A 和 B 部分:这是我的“主”应用程序模块,具有不同的控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      • 2022-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多