AngularJS templateUrl未在Internet Explorer 7中加载模板

AngularJS templateUrl未在Internet Explorer 7中加载模板,angularjs,internet-explorer-7,Angularjs,Internet Explorer 7,根据标题,当我在$routeProvider中使用templateUrl时,模板和控制器不会加载 在我的配置中,我有: .when('/thing/:thingId', { templateUrl: 'views/things.html', controller: 'ThingController' }) 如果我改成 .when('/thing/:thingId', { template: '<div>Hello you!</div>',

根据标题,当我在$routeProvider中使用templateUrl时,模板和控制器不会加载

在我的配置中,我有:

.when('/thing/:thingId', {
    templateUrl: 'views/things.html',
    controller: 'ThingController'
})
如果我改成

.when('/thing/:thingId', {
    template: '<div>Hello you!</div>',
    controller: 'ThingController'
})
.when('/thing/:thingId'{
模板:“你好!”,
控制器:“ThingController”
})
它起作用了。我使用的是AngularJS 1.2.2

我尝试过的想法:

  • 我尝试将模板添加到脚本标记中,但仍然不起作用。我没有收到任何错误,因为它在IE上,所以没有调试消息。我有一个警报,在我的控制器实例化时触发。这在IE7(可能还有8)中不会发生

  • 添加了html5shiv、json3 shim、angular ui的ie shiv,我创建了所有通用文档元素

  • 我的网站顶部有以下内容:

  • 我尝试的每一个想法都在Chrome和IE10模拟IE7中起作用(整个想法都在IE10模拟IE7中起作用,只是不是真正的IE7)

    我将尝试举一个例子来说明这个问题,但我想先提出这个问题

    编辑事后看来,我意识到一个plunkr示例是愚蠢的,因为plunkr不在IE7中运行,而这段代码适用于运行plunkr的东西。无论如何,我创建它是为了查看代码


    从1.2版开始,AngularJS似乎不支持IE7。通过切换到AngularJS 1.1.5解决了此问题。

    对于AngularJS 1.2+版本,您需要为IE7及以下版本注入
    $sce
    并使用
    $sce.trustAsResourceUrl(“…”)
    包装
    resourceUrl
    ,为您的指令提供以下内容:

    ...
    templateUrl: $sce.trustAsResourceUrl('/Resource/That/YouTrust.html')
    ...
    

    您可能还需要通过执行以下操作(如果您使用的是jQuery)来修改document.querySelector修补程序:

    否则角度将在此处爆炸(从角度源):

    还要确保您遵循了,特别是添加
    id=“ng app”
    ,而不是使用元素指令

    完成所有这些,IE7可能会工作;)


    编辑:修复引用URL

    在Plunker=>Plunker使用Angular=>hmmmm;构建时不起作用)angular docs站点在IE7中工作吗?不。这可能不是一个好迹象。我发现,当我开始在angular 1.2.27中使用ui路由器时,我必须更改为使用$sce.trustAsResourceUrl作为指令,以使IE7工作。
    if (!document.querySelector)
    {
        document.querySelector = function (selector)
        {
            return $(selector).get(0);
        };
    }
    
    var active = !!(document.querySelector('[ng-csp]') ||
                  document.querySelector('[data-ng-csp]'));