私は Angular JS アプリケーションを持っています。このアプリケーションでは、dojo ウィジェットを使用したいと考えています (実際には使用しなければなりません)。コントローラーの HTML テンプレートでは、Dojo マークアップを含む HTML を返すことができます。ただし、ビューが再レンダリングされるとき、Dojo の構文解析は自動的には行われません。再解析をトリガーできる唯一の方法は、コントローラーでこのようなことを行い、モデルが変更されたことがわかったときに呼び出すことで、少し遅れて手動でパーサーを呼び出すことです。
refreshDojo = function() {
setTimeout(function() {
require(["dojo/parser"], function(parser) {
parser.parse()
});
}, 10);
}
これは、次の 2 つの理由から実際には実現可能ではありません。
- タイムアウト後に何かをしなければならないことは、HTML が処理される前にすばやく発生するか、2 つの時間が遅くなり、ウィジェットが作成される前にコンテンツのフラッシュが発生することで、問題を引き起こすことになります。
- 第二に、私が間違っていなければ、parser.parse() は DOM 全体を解析しますが、単一の div のみを更新した場合はあまり効率的ではありません。
適切なタイミングで確実にトリガーできるように、DOM がいつ安定したかを確実に知る方法はありますか? また、コントローラーのルート要素にアクセスする方法はありますか ($element を注入できなくなったようです)。