AngularJS父div指令等待子div堆栈指令完成

AngularJS父div指令等待子div堆栈指令完成,angularjs,Angularjs,我有一部分html是这样的 <div my-custom-security-directive> <button ng-if={{some constraints}} ng-click={{logic}}>cancel</button> <button ng-disabled={{some logic}} ng-click={{some logic}}>submit<button> </div> 我最近/今天确实把

我有一部分html是这样的

<div my-custom-security-directive>
  <button ng-if={{some constraints}} ng-click={{logic}}>cancel</button>
  <button ng-disabled={{some logic}} ng-click={{some logic}}>submit<button>
</div>

我最近/今天确实把这个优先级放在了指令上,但我认为它在这个特定场景中没有任何作用。

即使
我的自定义安全指令
能够将CSS类附加到按钮并隐藏或显示它,按钮也有自己的
ng if
条件。这意味着按钮可能会被销毁并在以后重新创建,并且不再具有CSS类。如果该按钮使用
ng show
而不是
ng If
,您可能会有更多的控制权,因为该按钮将被隐藏但仍保留在DOM中

但是我认为
我的自定义安全指令
可能需要更多的控制。您可以使用transclusion,以便
my custom security directive
充当应基于
userhaspmission
销毁或创建的每组元素的容器

指令:

.directive('myCustomSecurityDirective', function () {
    return {
        transclude: true,
        link: function (scope) {
            scope.userHasPermission = true;
        },
        template: '<div ng-if="userHasPermission" ng-transclude></div>'
    }
});
.directive('myCustomSecurityDirective',函数(){
返回{
是的,
链接:功能(范围){
scope.userHasPermission=true;
},
模板:“”
}
});
HTML:


取消
提交

我的自定义安全指令是否使用转换?显示更多代码可能会有所帮助。无转换谢谢。我选择反对转换,只是因为这个指令在各地都被重复使用,而且它并不总是“包含”这个有问题的div。你的答案是正确的,我得出结论,我在我可以做的事情上处于一个艰难的境地:转换/自定义或一次性版本的指令。最后,为了使指令更简单,我将其保留下来,并向问题div添加了必要的类,因为如果它不满足要求,它将被
ng删除。我真的不喜欢我的解决方案,但我认为这是最简单的应用程序。
.directive('myCustomSecurityDirective', function () {
    return {
        transclude: true,
        link: function (scope) {
            scope.userHasPermission = true;
        },
        template: '<div ng-if="userHasPermission" ng-transclude></div>'
    }
});
<div my-custom-security-directive>
    <button ng-if="...">cancel</button>
    <button ng-disabled="...">submit</button>
</div>