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