我有一个简单的指令,搜索DOM以查找匹配的输入并隐藏它们(客户希望能够以恐怖的方式隐藏这些字段)。该指令在Chrome中运行良好,但在IE11中运行不正常。 ng-show
和ng-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);
}
};
}]);
任何想法将不胜感激。谢谢你提前!!!!
答案 0 :(得分:0)
我的好朋友杰伊帮我解决了这个问题。将超时值加到500就可以了。
原帖:timer(hideElements,0);
更改了行:timer(hideElements,500);
以某种奇怪的方式,IE中的角度执行管道与Chrome中的角度执行管道不同,因此将$ timeout设置为0,并没有在IE中做到这一点。无论如何,希望它在未来能够节省相同的时间。