ng-if中的angularjs ng-view

时间:2014-02-18 20:01:44

标签: angularjs angular-ng-if

使用角度1.2.10和ngRoute,jquery 1.10.2我在index.html中有以下代码:

<body ng-controller="MainCtrl">

    <div ng-include src="'partials/login/login.html'"></div>

    <div ng-if="isAuthenticated()">
        <div ng-view/>
    </div>
    <!--javascript files-->
</body>

初始登录页面(未配置为路由),下载所有需要的javascript文件,但在我登录后,ng-if评估为true,我注意到jquery为所有javascript文件触发了一堆XHR在浏览器控制台中:

XHR finished loading: "http://myurl/jquery-1.10.2.min.js?_=1392752363272"
XHR finished loading: "http://myurl/angular.min.js?_=1392752363273"
XHR finished loading: "http://myurl/app.js?_=1392752363274"
...and so on

控制台报告正在从jquery.1.10.2:8706

执行这些XHR

根据文档显示,当ng-if评估为true时,该元素将在那时创建和编译。我想这与ng-view和ngRoute有关,以及它们是如何连接在一起但我无法从文档中收集为什么会发生这种特殊行为。如果有人能够对这种行为有所了解和/或如果我试图采取的方法存在根本性的错误,那将非常感激。

注意:如果我使用ng ng-ng替换ng-if,则不会发生此行为。

2 个答案:

答案 0 :(得分:0)

如您所说,ng-if如果评估为false,则不会呈现其内容。

最好为您的登录页面创建一个单独的路由,一旦您通过身份验证,它将重定向您。

答案 1 :(得分:0)

我认为更好的设计方法是使用所有事物的路线,

假设用户未经过身份验证,然后路由到登录页面,后续请求检查身份验证(通过cookie或令牌),然后在某些事情失败时重定向到登录页面。