10 $ $ digest()迭代在IE中出错。无法弄清楚为什么

时间:2016-05-19 14:33:34

标签: javascript angularjs internet-explorer

我有一个功能,据报道无法在Internet Explorer中工作。不知道它有多久没有用,但我想它从一开始就是这样。我可以在IE11中验证它。

我的应用正在使用angularjs 1.3.17。

表单上有一个名为reset的按钮。当他们点击它时,它会调用vm.cancel(),如下所示:

function () {
    vm.working = true;
    vm.disableActions = true;
    manualEntryApi.deleteWageAccounts(vm.selectedEnterprise.RecordID)
    .success(
        function (data, status, headers, config) {
            vm.working = false;
            vm.disableActions = false;
            if (typeof (Storage) !== "undefined") {
                localStorage.setItem("filename", "");
            }
            window.location.href("/FormEntry/#/ManualEntry/?ID="+vm.selectedEnterprise.RecordID);                                             
    })
    .error(
        function (data, status, headers, config) {
            vm.working = false;
            vm.disableActions = false;
            vm.serverErrors = data;
            vm.serverErrorMessage = "Error clearing records.";
            vm.serverErrorMessage2 = "";        
            vm.openErrorModal = true;
    });
});

它将recordID发布到API,后者在后端执行大量操作。只要成功,它就会返回200

成功后,它会将一个空字符串写入localStorage,然后它会有效地进行页面刷新。您可以将window.location.href替换为window.location.reload(),因为它正在执行相同的操作。

但是,在重新加载时,它会给我$digest周期错误。我想也许这是ng-init发生的事情,但我注释掉了整个init代码块,但仍然存在错误。不知道发生了什么。

知道为什么会这样吗?我尝试升级到angular 1.4.0,但由于这是我继承的遗留应用程序,升级后会抛出很多意大利面和很多错误,所以我希望能让它工作在1.3.17。

我知道有类似这样的帖子通常最终会在for循环中定义一个数组,并因为它重新消化每个循环而得到这个错误。但是我现在在init上执行的唯一代码是:

    vm.model = {};
    vm.model.PaymentInfo = {};
    vm.selectedEnterprise = $location.search();
    vm.years = [];
    vm.selectedEnterprise.RecordID = $routeParams.ID;
    vm.EitOtherPageTotal = 0.0;
    vm.LstOtherPageTotal = 0.0;
    vm.WageOtherPageTotal = 0.0;
    vm.pageNumber = 1;
    vm.disableActions = false;
    vm.working = false;
    vm.openErrorModal = false;
    vm.serverErrors = [];
    vm.serverErrorMessage = "";
    vm.serverErrorMessage2 = "";
    vm.referenceName = "";
    vm.fileID = null;
    vm.sortOverride = null;
    vm.validFilename = true;
    vm.submitted = false; 

只是一些变量初始化。

2 个答案:

答案 0 :(得分:1)

尝试$ window.location.reload();

答案 1 :(得分:0)

我读了一些其他的答案和类似的问题,以角度重新加载页面的公认方式是$route.reload();,也许这种方法并使用Angular期望事情发生的方式将有助于......

How to reload or re-render the entire page using AngularJS

Angular JS: IE Error: 10 $digest() iterations reached. Aborting