Angular可能由于内部注入器而无法在IE9上工作?

时间:2015-08-20 11:32:43

标签: javascript angularjs internet-explorer internet-explorer-9

我有一个1.3.15角度的应用程序,它在Internet Explorer 9上不起作用,我得到Unable to get property 'replace' of undefined or null reference错误,指向角度核心中的这段代码。

错误被抛出了很多,但是我没有想到这个函数通常会做什么以及IE9上缺少什么来使它工作。

function createInternalInjector(cache, factory) {

    function getService(serviceName, caller) {
      if (cache.hasOwnProperty(serviceName)) {
        if (cache[serviceName] === INSTANTIATING) {
          throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
                    serviceName + ' <- ' + path.join(' <- '));
        }
        return cache[serviceName];
      } else {
        try {
          path.unshift(serviceName);
          cache[serviceName] = INSTANTIATING;
          return cache[serviceName] = factory(serviceName, caller);
        } catch (err) {
          if (cache[serviceName] === INSTANTIATING) {
            delete cache[serviceName];
          }
          throw err;
        } finally {
          path.shift();
        }
      }
    }

作为最后一点,我已经包含了es5-shim和shams,我已经使用了data-ng- *属性我已经阅读了多篇关于让角度在IE9上工作的文章,但没有一篇描述问题类似于这个,所以我离开时只问SO这个问题。

1 个答案:

答案 0 :(得分:0)

所以我通过添加断点和调试找到了这个问题,直到找到它无法注入$location的服务名称,这源于我尝试使用html5模式:

$locationProvider.html5Mode(true).hashPrefix('!');

如果我对此进行评论并使用#routes,应用程序可以正常工作,如果有人知道如何在IE9中使用html5mode,我会将你的答案标记为正确的,因为我没有&# 39;我想回答我自己的问题。