0

angular 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 と評価された後、ブラウザー内のすべての JavaScript ファイルに対して jquery によって一連の 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

コンソールは、これらの XHR が jquery.1.10.2:8706 から実行されていることを報告します

ドキュメントに基づいて、ng-if が true と評価されると、その時点で要素が作成およびコンパイルされるようです。これは ng-view と ngRoute に関係があり、これらがどのように接続されているかを想像していますが、この特定の動作が発生している理由をドキュメントから収集することはできませんでした. 誰かがこの振る舞いに何らかの洞察を与えることができれば、および/または私が取ろうとしていたアプローチに根本的に問題がある場合は、それを大いに感謝します.

注: ng-if を ng-show に置き換えた場合、この動作は発生しません。

4

2 に答える 2

0

あなたが言ったように、ng-ifと評価された場合、その内容をレンダリングしませんfalse

認証後にリダイレクトされるログインページ用の別のルートを作成することをお勧めします。

于 2014-02-18T21:29:26.453 に答える
0

設計するより良い方法は、すべてのものにルートを使用することだと思います.

ユーザーが認証されていない場合、ログイン ページにルーティングし、後続のリクエストで認証を確認し (cookie または token による)、何かが失敗した場合はログイン ページにリダイレクトします。

于 2014-02-18T21:33:19.993 に答える