确定child指令是否嵌套在父指令中

时间:2014-07-08 21:15:12

标签: angularjs angularjs-directive

我有一个指令,我希望它使用不同的templateUrl:,具体取决于它是否被parentDirective包裹。子项的link:函数的第四个参数(父控制器)似乎是确定是否存在父控制器的地方,因为require: ?^parentDirective如果找不到父项,则返回null,但我似乎无法弄清楚如何将其转换为templateUrl选择。我对$compile的理解是我可以使用templateUrl: function(),但我似乎无法使其发挥作用。也许我有范围问题。

link: function(scope, element, attributes, parentCtrl) {
    ...
    scope.wrapped = function() {
            return parentCtrl ? true : false;
        }
}

1 个答案:

答案 0 :(得分:1)

感谢所有输入。这就是我最终做的事情。模板是动态的,并根据是否在链接函数中定义了parentCtrl来配置自身。

<强>指令:

...
templateUrl: 'path/to/template.html',
link: function(scope, element, attributes, parentCtrl) {
    if (parentCtrl) {
        scope.wrapped = true;
    } else {
        scope.wrapped = false;
    }
}
...

<强>模板:

<div ng-if="!wrapped" ng-click="someAction()">Do Action</div>