在指令中动态添加ng-if属性

Add ng-if attribute dynamically in directive

本文关键字:ng-if 属性 添加 动态 指令      更新时间:2023-09-26

我使用以下指令为HTML元素添加属性:

    module1.directive('rhVisibleFor', function ($rootScope) {
        return{
            priority: 10000,
            restrict: 'A',
            compile: function (el, attr) {
                el.removeAttr('rh-visible-for'); 
                el.attr('ng-if', '$layoutPreferences.visibilities['''+attr.rhVisibleFor+''']');
//                el.attr('ng-if', 'false');
                var fn = $compile(el);
                return function(scope){
                    fn(scope);
                };
            }
        }
    })

编译执行成功,但是生成的代码对更改没有响应。即使我显式地将ng-if属性设置为false,它也会显示。

我的问题解决了,问题的原因是缺乏$scope的指令依赖

module1.directive('rhVisibleFor', function ($rootScope,$compile) ...