Angular $templateCache在 Internet Explorer 中不起作用

Angular $templateCache Does Not Work in Internet Explorer

本文关键字:Explorer 不起作用 Internet templateCache Angular      更新时间:2023-09-26

我在ie10中遇到了Angular的$templateCache问题,但在ie11中也是一个问题。它适用于Firefox,Chrome和Safari。

这是我在模板中的模板定义.js:

angular.module('app').run(['$templateCache', function($templateCache) {
  'use strict';
  $templateCache.put('/views/page.html',
    "<div class='"page-header row'">'n" +
    "  <div class='"col-xs-6'">'n" +
    "    <span class='"heading title'">{{pageTitle}}</span>'n"
    ...
  );
}]);

我将模板包含在<head>页面顶部.js例如:

<script src="/js/templates.js"></script>

最后,我在路由定义中使用模板,如下所示:

angular.module('app', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when('/', {
      redirectTo:'/page'
    })
    .when('/page', {
      controller: 'pageController',
      templateUrl:'/views/page.html'
    })
    .otherwise({
      redirectTo:'/'
    });
}]);

同样,它在Chrome,Firefox和Safari中运行良好,但不能在IE10中运行良好。我能想到提供的唯一其他信息是该应用程序不在根级别,它是 http://example.com/app 的。但模板确实存储在 http://example.com/views 中。

有什么想法吗?

编辑:这是一个在IE中实际工作的JSFiddle,但我不确定这是否是因为JSFiddle如何处理浏览器框架。如果将代码复制并粘贴到索引.html中,然后在服务器上运行它,则在IE中将不起作用。http://jsfiddle.net/v9sv7jdL/2/

在这种情况下,

我们实际上在IE应用程序中具有特殊的逻辑。它将 ?ts= 添加到我们请求的末尾,当然,模板缓存中不存在。