嵌套Angular指令在“模板”vs.中表现不同.“templateUrl”

Nested Angular Directive behaving differently with `template` vs. `templateUrl`

本文关键字:templateUrl vs Angular 模板 嵌套 指令      更新时间:2023-09-26

我有一个'助手'指令,允许我轻松访问父指令中的子DOM元素。然而,当我与另一个指令一起使用这个助手指令时,我遇到了一个问题。如果我在指令中使用template,一切都很好。然而,如果我使用templateUrl,我会得到一个错误,说帮助指令保存到作用域的元素是未定义的。

有点难以解释,但这是plunkr:http://plnkr.co/edit/NHKBGfro7Xe3dSalq5bt?p=preview

注意:我已经添加了一个setTimeout,在5秒后触发,它允许templateUrl指令工作,因为它现在在父指令的范围内可用。

这是预期的行为。

angularjs美元编译

Post-linking函数在子元素被链接后执行。

请注意,包含templateUrl指令的子元素将不会被编译和链接,因为它们正在等待它们的模板异步加载,而它们自己的编译和链接已经暂停,直到异步加载完成。

对于那些不等待异步模板解析的元素,在链接后函数中进行DOM转换是安全的。

相关Github问题