コントローラのコンストラクタでコントローラに必要なデータがロードされるJohn PapaのController Activation Processをフォローしようとしています。しかし、データがロードされるまで、null
オブジェクトにバインドしようとするAngularのため、私のページが多くのエラーを引き起こしています。角度コントローラデータがロードされるまでデータトリガが発生しない
例
コントローラの初期化や映画についての情報を取得するために、AJAX呼び出しを行います。その間、HTMLは映画のディレクターに関する情報をロードしようとします。
Controller.js
class MovieController {
constructor(movieHttp) {
this.movieHttp = movieHttp;
this.movie = null;
activate();
}
activate() {
this.movieHttp.getMovie(...).then(movieData => { this.movie = movieData; });
}
}
index.htmlを
...
<span ng-bind="vm.movie.actor.name"></span>
...
関数呼び出しにng-bind
を変更する以外に、この問題を解決し、次に行うための良い方法はありますif (!this.movie) { return; }
?
「
」タグですべてをラップすることができます。 'vm.movie'に値が設定されるまでレンダリングされません(レンダリングもされません)。 – Lex@Lexこれをやろうとしましたが、コンポーネントが実際に表示されているかどうかだけではありません。私は現在 'ng-cloak'を使ってレンダリングが終了するまでHTMLを隠していますが、' null'オブジェクトの属性にアクセスすることで、JavaScriptエラーが発生し、これを解決しようとしています。しかし、提案に感謝! –