我有一个自定义指令,它生成一个带有验证错误的输入,最终在构建输入之后,这是我想知道的部分:
var html= template.get();
element.html(html);
$compile(element)(scope);
我还添加到指令对象中,我认为没有区别,因为我没有对象中的模板或应该吗?
replace:true
但是指令元素DOM仍然存在,并且生成的输入作为子项附加,你可以帮助我吗?
答案 0 :(得分:1)
是的,replace
与template
/ templateUrl
一起使用。
对于在link
中动态检索的模板,请使用
var html= template.get();
element.replaceWith($compile(html)(scope));
请注意,与replace
相比明显的缺点是指令的属性不会被转换为模板元素,这必须手动完成。
答案 1 :(得分:0)
它无效,因为您还没有提供template
参数,而您的链接功能是手动添加元素。删除链接功能并添加类似的模板参数,它将起作用。我已用它更新你的fiddle
app.directive('test',function($compile){
return {
restrict:'E',
replace:true,
template:'<input type="text" name="test">'
}
});