带有$ timeout的Angular指令在IE中不起作用

时间:2016-08-12 02:25:48

标签: angularjs angularjs-directive internet-explorer-11

我有一个简单的指令,搜索DOM以查找匹配的输入并隐藏它们(客户希望能够以恐怖的方式隐藏这些字段)。该指令在Chrome中运行良好,但在IE11中运行不正常。 ng-showng-if是有效的替代方案,但应用程序有数千个字段,因此非常耗时。

我使用$ timeout(函数,0)来准备dom(我明白它相当于JQuery中的$(document).ready。)

该指令如下:

angular.module("ngEnter", [])
    .directive("hideFields", ['$timeout', function (timer) {
        return {
            scope: { permisos: '=permisos' },
            link: function (scope, elem, attr, ngModel) {
                var hideElements = function () {
                    if (scope.permisos) {
                        for (var i = 0; i < scope.permisos.length; i++) {
                            var element = document.getElementById(scope.permisos[i]);
                            while (true) {
                                element = element.parentElement;
                                if (angular.element(element).hasClass('form-group'))
                                    break;
                            }
                            element.style.display = 'none';
                        }
                    }
                }
                timer(hideElements,0);

            }

        };
    }]);

任何想法将不胜感激。谢谢你提前!!!!

1 个答案:

答案 0 :(得分:0)

我的好朋友杰伊帮我解决了这个问题。将超时值加到500就可以了。

原帖:timer(hideElements,0);

更改了行:timer(hideElements,500);

以某种奇怪的方式,IE中的角度执行管道与Chrome中的角度执行管道不同,因此将$ timeout设置为0,并没有在IE中做到这一点。无论如何,希望它在未来能够节省相同的时间。