我有一个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这个问题。
答案 0 :(得分:0)
所以我通过添加断点和调试找到了这个问题,直到找到它无法注入$location
的服务名称,这源于我尝试使用html5模式:
$locationProvider.html5Mode(true).hashPrefix('!');
如果我对此进行评论并使用#routes,应用程序可以正常工作,如果有人知道如何在IE9中使用html5mode,我会将你的答案标记为正确的,因为我没有&# 39;我想回答我自己的问题。