在ie8和angularjs中视图无法更新

View not updating in Internet Explorer 8 and angularjs

本文关键字:更新 视图 ie8 angularjs      更新时间:2023-09-26

我们正在开发一个需要IE8支持的单页应用程序。应用程序本身的界面非常简单(基本上是一个主屏幕,允许你选择你想要填写的表单,许多动态表单,以及一个基于你填写的表单的结果屏幕)。

所以我们实现了核心导航,在IE8中尝试了一下,一切正常,很高兴(就像你在IE8中一样高兴)。

项目继续进行,我们实现了所有核心表单的东西,添加了CSS和更多的HTML和…导航开始表现得很奇怪(在IE8中):一些链接(不是全部,更奇怪的是)不更新视图。URL更新正确,如果刷新浏览器,页面将按原样显示。

为了改变页面,我们在导航服务中使用$location(没有直接的#/whatever),注入到控制器中。路由由$routeProvider完成。

我们遵循https://docs.angularjs.org/guide/ie上的一切(ng-appid在html标签,没有标签,只有属性等)。在Chrome, FF, Safari中工作完美。

这似乎是一个奇怪的错误,由(至少)select2调用Array引起的。forEach (IE8不支持):

function cleanupJQueryElements() {
    var self = this;
    Array.prototype.forEach.call(arguments, function (element) {
        self[element].remove();
        self[element] = null;
    });
}

它已经被修复了(已经有一段时间了),并被

所取代
$.each(arguments, function (i, element) {
    self[element].remove();
    self[element] = null;
});

IE8本身没有报告错误,但我们在IE8模拟模式下运行IE11时发现了这个问题(并捕获了所有异常,因为原始消息缺乏任何问题所在的指示)。