自定义指令替换元素不起作用

时间:2015-11-06 22:26:23

标签: angularjs angularjs-directive angularjs-scope

我有一个自定义指令,它生成一个带有验证错误的输入,最终在构建输入之后,这是我想知道的部分:

var html= template.get();
 element.html(html);
 $compile(element)(scope);

我还添加到指令对象中,我认为没有区别,因为我没有对象中的模板或应该吗?

replace:true 

但是指令元素DOM仍然存在,并且生成的输入作为子项附加,你可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

是的,replacetemplate / 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">'
    }
});