我正在尝试使用我构建的仓库检索指令的模板,该仓库返回一个解析为模板内容的Promise。
在指令中使用compile函数和在link函数中使用$compile服务有何区别?
编译函数。
这将呈现HTML,但范围不绑定在DOM元素上。
使用$compile。
在指令中使用compile函数和在link函数中使用$compile服务有何区别?
编译函数。
compile: function (element, attrs) {
templateRepository.get('Shared/Login').then(function (result) {
element.replaceWith(result);
});
}
这将呈现HTML,但范围不绑定在DOM元素上。
使用$compile。
link: function (scope, elem, attrs) {
templateRepository.get('Shared/Login').then(function (result) {
elem.html(result);
$compile(elem.contents())(scope);
});
}
这个按预期工作。
这里有什么区别?
compile
函数不会链接到作用域,只会从指令和其所附加的元素创建一个模板。如果是这样,那么使用$compile
服务是我想要做的正确方式吗? - Sam$compile
还是执行生成的模板函数都不会将元素添加到DOM中。您可以拥有一个已编译的元素,但它尚未在DOM中,反之亦然。 - KayakDave