将主页重定向为shell页面,而不是angularJS中的索引页面

Redirected homepage as shell page rather than the index page in angularJS

本文关键字:angularJS 索引 重定向 主页 shell 页面      更新时间:2023-09-26

我是AngularJS的新手。AngularJS通常适用于单页应用程序场景,我找到的大多数登录示例都定义了索引.html作为shell页面,这意味着ng-view是在索引.html中定义的。

问题 :在我的场景中,登录页面和索引页面是相同的,即当您点击根上下文时,您会登陆登录.html一旦成功登录,您就会到达主页.html。主页将有一个徽标,顶部横幅,左侧导航和一个内容部分。不同的模板将简单地位于内容部分内,保持不变,提供不同的视图,如仪表板视图、查询表单视图、报告视图等。因此,我更适合将主页.html作为shell页面,因为所有其他视图都将仅嵌入到主页中。

现在我如何从登录页面重定向到主页,这是外壳页面,因为根据我的理解

<body ng-app></body>
将使登录页面

成为外壳页面,一旦登录.html是外壳页面,就无法重新定义。

另一种方法是拥有一个空白的 shell 页面,并将整个登录页面作为一个视图和仪表板.html作为另一个视图和类似的查询.html、报告.html和不同的模板。但这不是一个好方法,因为我将不得不在每个模板中复制顶部横幅、导航等的代码。这样做会破坏SPA的基本目的。

如何实现这一点?如果可能的话,最好有一个虚拟的例子

我认为你应该重新考虑如何构建索引.html页面

您的索引页面不是登录页面/主页。它必须是一个容器,根据当前路由包含它们中的每一个。

所以基本上索引页面将是

<body ng-app="app">
    [an header maybe ?]
    <div ng-view></div>
    <script></script>//all script at end of page
<body>

然后你定义路由,说/login 将与 login 匹配的内容.html作为 ng-view 的内容。/home 将与 homepage.html 匹配。

未知路由将与/login 匹配($routerProvider.否则(。在您的登录页面中,如果您的用户已经连接,您可以将他重定向到主页。

在所有其他页面上,如果用户未连接,则将当前路由更改为登录路由。为此,请查看 https://docs.angularjs.org/api/ngRoute/service/$route$routeChangeSuccess的活动