Angular JS错误:仅在IE 10和IE 11中出现[$rootScope:infdig]
Angular JS Error: [$rootScope:infdig] in IE 10 and IE 11 only
我正在运行Angular JS v1.4.7,该应用程序在Internet Explorer 10和11中完全崩溃(我们不支持旧版本)。当我检查控制台时,我看到:Error: [$rootScope:infdig]
,这里对此进行了一些解释。
它在其他浏览器中运行完美,没有任何错误。
经过大量的尝试和错误,我能够将问题隔离为其中一个指令中的一个逻辑位,我已经简化了它:
tsApp.directive('svgIcon', function($timeout) {
return {
restrict: 'E',
replace: true,
scope: {
inlinesvg: '=',
orientation: '@',
themeid: '@',
scale: '@',
verticalAlign: '@'
},
template: '<span ng-bind-html="inlinesvg | unsafe"></span>',
link: function(scope, element, attrs) {
/* @TODO Synchronize with similar function in Mode Icon directive */
/* Function updates inlinesvg to avoid flicker */
scope.setLogoDimensions = function() {
/* Obtain svg attributes */
var svg = angular.element(scope.inlinesvg);
/* ... */
/* Reinsert raw svg with jQuery conversion */
scope.inlinesvg = $('<div>').append(svg.clone()).html();
};
/* Resize if new inlinesvg */
scope.$watch('inlinesvg', function() {
scope.setLogoDimensions();
});
}
};
});
我可以通过注释setLogoDimensions
:scope.inlinesvg = $('<div>').append(svg.clone()).html();
的最后一行来打开/关闭这个问题
来自Angular文档
当应用程序的模型变得不稳定并且每个$digest循环都会触发状态更改和随后的$digest周期Angular检测到这种情况并防止无限循环避免导致浏览器变得无响应。例如,这种情况可以通过在路径上设置手表来发生并且随后在值改变时更新相同的路径。
$scope$watch('fo',function(){$scope.foo=$scope.foo+1;});
在这里,您正在您的范围内修改您的inlinesvg模型$监视inlinesvg(抛出了您的setLogoDimensions()函数)。你不能这样做
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- $rootScope未使用forEach进行更新
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- $rootScope not working
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 设置倒计时计时器,IE出现问题
- 仅在IE中,javascript中的时区名称不正确
- 在IE中加载Firebug Lite时出现问题
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 为什么我得到错误IE修剪方法是't支持
- 正在$rootScope上达到控制器作用域$在内部控制器上
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- 通过具有IE<11
- 无法在窗口内使用rootScope.通知
- IE在将字符串转换为日期时从日期中删除4小时
- 列表样式在IE中未设置为none,但在IE中适用
- IE/Chrome中未定义的函数,但Firefox中没有
- Angular JS错误:仅在IE 10和IE 11中出现[$rootScope:infdig]