角度选择性转换

时间:2014-04-24 01:02:21

标签: angularjs angularjs-directive

有没有人知道如何有一个可以选择性地转换指令正文的指令?

例如,如果我有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的等价物,它可以让我换掉内容而不是指令所在元素的主体?

1 个答案:

答案 0 :(得分:0)

通过使用第五个参数(可能是转换链接函数),您可以访问指令的link函数内的已转换内容。还要记住设置指令的transclude属性。

function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }

以下是工作中转换链接功能的粗略演示:JSFiddle

很高兴有帮助。

注意:

请注意,如果您在1.2.x之前使用AngularJS版本,则转换链接功能可用作指令的compile属性的第三个参数。如official documentation所指出的那样,这已被弃用。