2015-11-06 24 views
0

我有一个与它的验证错误产生输入自定义的指令,建立输入后最终,这里是我想了解一下部分:定制指令更换滤芯不工作

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

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

replace:true 

但是指令元素DOM仍然存在,并且生成的输入被附加为孩子,你能帮我解决吗?

+0

请创建一个小提琴。 –

+0

或者至少给我们更多的代码请 – Chris

+0

@MattWay http://jsfiddle.net/57nv846k/ – sisimh

回答

1

是,replace结合使用时的工作。

对于在link动态检索到的模板,使用

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

请注意,在与replace比较明显的缺点是该指令的属性不会被翻译成模板元素,这必须手动完成。

0

它不起作用,因为您尚未提供template参数,并且您的链接功能是手动添加元素。删除链接功能,并添加一个模板参数像这样,它会工作。香港专业教育学院更新您的fiddle它与template/templateUrl

app.directive('test',function($compile){ 
    return { 
     restrict:'E', 
     replace:true, 
     template:'<input type="text" name="test">' 
    } 
}); 
+0

我有一个复杂的逻辑来创建模板,我在创建模板之前需要调用一些函数进行初始化,它可以在不使用模板的情况下在链接代码中工作吗?我已经意识到这个部分,正如我在我的问题中提到的那样 – sisimh