3

あるビューから別のビューに変更するときにコントローラーをロードしたいと思います。

たとえば、私はホームページにいて、ユーザーはログインページに行きたいと思っています。ユーザーがログインページに移動した場合にのみロードしたいapp.js(メインAngularJSスクリプト)に含まれていないファイルにLoginControllerがあります。

さまざまなソリューションを見ましたが、非常に複雑です。コントローラーは非常にシンプルで、異なるファイルに入れたいだけですが、使用しない場合はコントローラーをロードしたくありません。

ありがとう。

4

3 に答える 3

1

おそらくng-routeが必要です。これはまさにあなたがやりたいことをするモジュールです。(他の機能とともに -> ngRoute。次の方法でルートを定義します。

var app = angular.module('app ', []);
app .config(['$routeProvider',
  function($routeProvider) {
  $routeProvider.
    when('/login', {
      templateUrl: 'login.html',
      controller: 'loginController'
    }).
    when('/home', {
      templateUrl: 'home.html',
      controller: 'homeController'
    }).
  otherwise({
    redirectTo: '/home'
  });
}]);

また、loginController を宣言する必要がありますが、心配する必要はありません。コントローラーがバインドされているビューを変更すると、コントローラーは破棄され、ログインページを再度開いたときに再作成されます。

于 2016-02-11T12:22:29.167 に答える
1

あなたが探しているのはhttps://oclazyload.readme.io/だと思います。モジュールを動的にロードします。私はそれがrequire.jsに基づいていると信じています。

于 2016-02-11T12:33:25.953 に答える
0

AngularJS がフレームワークであるシングルページ アプリケーションは、すべてのビューとコードを事前に読み込みます。これは、読み込み時間が (少し) 長くなりますが、高速で流暢なアプリケーションを提供するためです。コードはAngularJSによって動的にロードされることを意図していないため、そうするためのクリーンなソリューションは見つかりません。さらに、そもそもそうする理由がわかりません。アプリケーションが最大のアプリケーションでない限り、コントローラを動的にロードしても意味がありません。すべてのコードを 1 つのファイルにまとめて最小化すると (本番環境ではこれを行う必要があります)、コントローラーのロードは問題を最小限に抑えることができます。ビュー間で動的にロードするよりも、すべてを 1 つのファイルに入れて 1 つのリクエストで取得する方が高速です。

私のアドバイス: やらないでください、やらないでください。理由はそのままで、そのままでいいです:)

ただし、本当にこれを実現したい場合は、スクリプトの読み込み、コントローラーのインスタンス化など、すべてを自分で行うしかありません。

于 2016-02-11T12:46:29.940 に答える