2

angular.js アプリケーションでルートを使用する場合、特定のルートのテンプレートをサーバーから直接レンダリングし、コントローラーをそれにアタッチすることは可能ですか?

たとえば、ログイン画面と、ユーザーがログインしたときにコンテンツを表示する画面を備えたアプリケーションがあります。

  • ユーザーがログインしていないときにアプリケーションを開いたときに、ログイン ルートのテンプレートをサーバーから直接レンダリングし、適切なコントローラーをそれに接続できればすばらしいと思います。これにより、ユーザーはフィードバックを直接受け取り、ページに何かが表示される前に angular.js がブートストラップされるまで待つ必要がなくなります。
  • ユーザーがログインしてアプリケーションを開くと、コンテンツページのテンプレートをサーバーから直接レンダリングし、angular.js からのルーティングを使用しない場合と同じようにコントローラーをそれにアタッチします ( ng-controller など)。このページの一部は、有用なものを表示する前にコントローラーを接続する必要があるため、クロークされます。

angular.js とルーティング API を少し試しただけです。しかし、私のテストアプリケーションでは、開いたときに最初は何も表示されず、角度がブートストラップされると「/」ルートのビューがレンダリングされます。一部の情報にはコントローラーを接続する必要がないため、ビューを直接表示したい。ng-cloack または ng-bind を使用して非表示にできるその他のもの。しかし、この方法では、はるかにきれいになります。

これを達成する方法を知っている人はいますか?私の説明がまだ少し不明確な場合は、お知らせください。これを説明するのは難しいと思いました...

敬具、

大安

4

1 に答える 1

0

正直なところ、私はこの解決策を試したことはありませんが、コントローラー テンプレートは必ずしも静的ファイルである必要はないと思います。
テンプレートへのパスを指定する必要がありますが、動的に作成できます。
例えば:

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/login', {templateUrl: 'partials/login.php', controller: 'LoginCtrl'});
    $routeProvider.when('/logout', {templateUrl: 'partials/logout.php', controller: 'LogoutCtrl'});
    $routeProvider.otherwise({redirectTo: '/login'});
  }]);

login.php と logout.php は、有効な AngularJS テンプレートを返す必要があります。
私はこれを試したことはありませんが、うまくいくはずです。
これがAngularのやり方かどうかはわかりません。

于 2013-07-11T10:09:26.117 に答える