私の Angular アプリケーションには、ルートに応じて変化するメイン ビューと、何があっても表示されるサイドバーがあります。私のHTMLは次のようになります。
<div id="container">
<div id="sidebar" ng-controller="SidebarCtrl">(sidebar code)</div>
<div ng-view id="content">Loading...</div>
</div>
そして、JavaScript は次の順序で読み込まれます。
- Vendor.js (Angular など)
- App.js (私のアプリケーション)
SidebarCtrl は App.js で定義されています。ただし、Angular が読み込まれるとすぐにng-controller
ディレクティブが表示され、それをすぐにサイドバーに割り当てようとするため、app.js がキャッシュされていない限り、「引数 SidebarCtrl は関数ではありません」というエラーが発生します。別のファイルにサイドバーを配置して、Vendor.js の前にロードすることを考えていましたが、サイドバーは App.js で定義されたいくつかのサービス (つまり、私のカスタム認証サービス) に依存しています。
MyApp.controller('SidebarCtrl',
['$scope', '$location', 'auth', function($scope, $location, auth) {
(...)
}])
だからどちらにしても途方に暮れています。
これを設定するより良い方法があると確信しています...何かアイデアはありますか?単純な関数として定義SidebarCtrl
しても、サービスにアクセスできますauth
か?
ありがとう