ES6 で実行される AngularJS アプリケーションの取得に取り組んでいました。歴史的に、私はコントローラ ファイルがアプリケーションに自身を登録できるようにするパターンを使用してきました。この方法では、ファイルが定義するコントローラ、サービスなどについて心配する必要がないからです。require() を使用することで、依存関係と初期化を簡単に順序付けて、コントローラー ファイルに集中できるようにすることができました。
ES6 への移行を検討し、require() ではなく import を使用すると、順序に依存するコードが機能しなくなっていることがわかりました。添付されているのは、私がやりたいことの大まかな近似 (決して実行しない) バージョンです。
私が理解した唯一のことは、RegisterIndexController() 関数を index.js からエクスポートして、app.js から呼び出すことができるということです。これは機能しますが、依存関係を別の方法でプッシュできるかどうか疑問に思っています。app.js から "app" をコントローラーに渡すことができる場所
app.js
app = angular.module('app', ['ui.router'])
angular.element(document).ready(() => angular.bootstrap(document, ['app']))
import './controllers/index'
app.run(() => {
})
index.js
app.controller('IndexController', IndexController)
class IndexController {
/*@ngInject*/
constructor() {
this.count = 10
}
}
index.html
<div ng-controller="IndexController as vm">
{{ vm.count }}
</div>