我有一个 Angular JS 应用程序,我想(实际上我必须)在其中使用 dojo 小部件。在控制器的 HTML 模板中,我可以返回其中包含 dojo 标记的 HTML。然而,当视图被重新渲染时,dojo 解析不会自动发生。我能够触发重新解析的唯一方法是在稍微延迟后手动调用解析器,方法是在控制器中执行类似的操作,然后在我知道模型已更改时调用它。
refreshDojo = function() {
setTimeout(function() {
require(["dojo/parser"], function(parser) {
parser.parse()
});
}, 10);
}
这实际上并不可行,原因有两个:
- 在超时后必须做任何事情必然会导致麻烦,要么在 html 被处理之前快速发生,要么两个缓慢发生,在创建小部件之前导致内容闪烁。
- 其次,如果我没记错的话,parser.parse() 会解析整个 DOM,如果我只更新一个 div,这不是很有效。
有没有办法确定 DOM 何时稳定,以便我可以确保在正确的时间触发它?有没有办法访问控制器的根元素(看来你不能再注入 $element 了)?