有没有人知道如何有一个可以选择性地转换指令正文的指令?
例如,如果我有myWrapper的以下div和指令。
<div data-my-wrapper="foo">
<h1>Hello World</h1>
</div>
我希望我的指令中有代码,就像这个伪代码一样。
if (foo.locked) {
// user a static template saying that the item is locked.
}
else {
// Tranclude the body content
}
有没有办法直接指示哪些内容应该被转换?或者是否有一种推荐的方法来获得if / then / else的等价物,它可以让我换掉内容而不是指令所在元素的主体?
答案 0 :(得分:0)
通过使用第五个参数(可能是转换链接函数),您可以访问指令的link
函数内的已转换内容。还要记住设置指令的transclude
属性。
function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
以下是工作中转换链接功能的粗略演示:JSFiddle。
很高兴有帮助。
注意:强>
请注意,如果您在1.2.x之前使用AngularJS版本,则转换链接功能可用作指令的compile
属性的第三个参数。如official documentation所指出的那样,这已被弃用。