AngularJS嵌套应用程序

时间:2015-02-14 12:54:49

标签: jquery angularjs structure

我需要在另一个应用程序中嵌套应用程序,我正在寻找如何做到这一点的良好实践。

我有一个" userApp"管理经过身份验证的用户的控制面板。 因此,未经过身份验证的用户的结构如下所示。

<html>
  <body>
    <nav>
      Login
    </nav>
    <div>
      ....
    </div>
  </body>
</html>

登录由PHP管理,因此当用户登录时,他被重定向到控制面板,结构如下所示。

<html>
  <body>
    <nav>
      User
    </nav>
    <div ng-app="userApp">
      <div ng-view="">...</div>
      ....
    </div>
  </body>
</html>

所以,现在我需要在这个应用程序之上定义一个主要应用程序,由经过身份验证和未经过身份验证的用户共享,结构将如下所示。

<html>
  <body ng-app="mainApp">
    <nav>
      User
    </nav>
    <div ng-app="userApp">
      <div ng-view="">...</div>
      ....
    </div>
  </body>
</html>

这两个应用程序不需要共享任何内容,只是我需要一个主应用程序来管理经过身份验证的用户和未经身份验证的用户之间的公共数据。例如,可以管理导航栏,侧边栏,不同的ajax调用,但不关心用户是否经过身份验证(这是部分正确的,userApp可以设置localStorage变量,可以在userApp外部读取,并且可以由mainApp管理)。 userApp有路由,mainApp没有。

我还没有尝试,但我很确定它会破裂,我正在寻找如何达到同样结果的最佳做法(我不想搞砸了代码,两个月后发现这是弗兰肯斯坦......)

有什么建议吗?这是可以实现的,或者我需要重新考虑结构并避免使用mainApp(让我们说,我可以使用jQuery来做同样的事情......)。我只是不想放弃用户应用程序中的路由,如果可能的话,我不想改变这个中的任何内容,因为它是单独维护的,它已准备好并经过测试它是。

由于

修改

看起来答案是否定的 AngularJS applications cannot be nested within each other.

所以我的问题是,是否可以在身体级别移动userApp并仅在用户通过身份验证并且仅在控制面板中使用路由?

实施例

/索引

/user#/控制面板

/user#/account有角度的路线

/some-url没有角度路线

/some-url/some-page没有角度路线

1 个答案:

答案 0 :(得分:2)

在我看来,您应该重新考虑您的结构,例如,您可以使用嵌套控制器和服务来创建应用程序来管理身份验证。

我发现了一些关于嵌套应用的问题,似乎有人能够做某事但可能不是你的情况。无论如何看看:

Can I use one ng-app inside another one in AngularJS

AngularJS: How to nest applications within an angular app