コントローラのライフサイクルで例外が起きた時や、ライフサイクルイベントがrejectされるプロミスを返した時、ルートエレメントが無い場合、テンプレートが無い場合など、コントローラの初期化に失敗する場合の動作について、以下のような挙動になるようにします。
- コントローラの初期化に失敗した時、コントローラをdisposeする。ユーザコード(__initなど)で例外が起きた時は、それを投げる(飲まない)。
- 初期化完了前にコントローラがdisposeされるときに、__unbind、__disposeのライフサイクルは実行しない。
- コントローラをdisposeするとき、__unbind、__disposeで例外が起きてもコントローラのunbind、dispose処理は行う。ただし、nullifyは実行しない(エラー原因の特定をしやすくするため)。例外が起きたらそれ以降のライフサイクルは実行しない。
- コントローラの初期化に失敗した時、イベントをあげる。controllerManagerをeventDispatcherのmixinとして、controllerManagerがdispatchするようにする。コントローラ定義オブジェクトや例外オブジェクト等をイベントハンドラの引数として受け取れるようにする。
コントローラのライフサイクルで例外が起きた時や、ライフサイクルイベントがrejectされるプロミスを返した時、ルートエレメントが無い場合、テンプレートが無い場合など、コントローラの初期化に失敗する場合の動作について、以下のような挙動になるようにします。