2014-04-01 31 views
0

我是angluarjs的新手,并试图构建一个示例应用程序。何时使用模块与控制器

本申请分为3部分/部分:

A.)地图

B.) “接收到的” - 面积

C.) “发送” - 面积

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

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

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

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

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

但我不知道,如果这是正确的方式/最佳做法。

的其它方式可能是整个页面的单个模块的控制器3(A,B,C),该处理逻辑部分A,B和C.

什么是angularjs的正确方法?

回答

0

搜索的方式来获得一些灵感,我决定为实现以下思考:

对于所有的自制代码,我使用一个模块为整个应用程序以及所有外在的东西,捆绑外部插件和服务,我采取了不同的模块。这意味着:对于每个“服务插件捆绑”(如谷歌API &角谷歌-地图插件)

因此,我可以切换模块,如果外部服务不起作用PNE模块等

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

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

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

1

从您的描述中,我建议将它设计为一​​个单独的AngularJS应用程序,并为每个视图使用单独的控制器。听起来你会从使用角度服务来处理客户端业务逻辑和缓存视图可以使用的任何共享数据/模型中受益。在Angular中最好的做法是让控制器保持精简并专注于视图设置/绑定并协调对服务的访问。

+0

目前我启动/引导部分B节/模块A完全加载/准备就绪后。那么如何处理“控制器A”(地图)加载并准备好后“控制器B”运行?默认行为是每个控制器在启动模块时都运行,对吧? –

+0

当遇到指定控制器的任何指令时,控制器将运行。我在这里做了一些假设,但是如果你的数据都是同一个域的一部分,你可以使用角度服务封装对数据的访问并将服务注入到你的控制器中......你可以将每个部分/ ng-View指令及其相关控制器,并使用角度路由在视图之间适当地进行导航。该服务将在您的控制器的实例化之间保持状态,并且您可以将逻辑放入路由中,以确保在必要时进行正确的流程。 – terryt

+0

我现在选择我自己的指令“何时创建新模块与控制器”。但提示+1使用服务在控制器/模块之间共享。谢谢。 –