angularjs – TypeError:无法读取未定义的属性“replace”
发布时间:2020-12-17 07:36:59 所属栏目:安全 来源:网络整理
导读:尝试使用ui-router使用 html5Mode时,我收到上述错误.任何人都可以指出我在做错什么? TypeError: Cannot read property 'replace' of undefined at bd (angular.js:10555) at Object.anonymous (angular.js:11403) at l.$get.l.$digest (angular.js:14222) a
尝试使用ui-router使用
html5Mode时,我收到上述错误.任何人都可以指出我在做错什么?
TypeError: Cannot read property 'replace' of undefined at bd (angular.js:10555) at Object.<anonymous> (angular.js:11403) at l.$get.l.$digest (angular.js:14222) at l.$get.l.$apply (angular.js:14493) at angular.js:1449 at Object.e [as invoke] (angular.js:4182) at d (angular.js:1447) at sc (angular.js:1467) at Jd (angular.js:1361) at HTMLDocument.<anonymous> (angular.js:26086) angular.js中的该段是: 10554 function trimEmptyHash(url) { 10555 return url.replace(/(#.+)|#$/,'$1'); 10556 } 路由文件: (function(){ 'use strict'; angular .module('app') .config(routes); routes.$inject = ['$stateProvider','$locationProvider']; function routes($stateProvider,$locationProvider) { // Configure app states $stateProvider .state('app',{ abstract: true,templateUrl: 'modules/app/app.html',controller: 'AppController' }) .state('app.home',{ url: '/',templateUrl: 'modules/home/index.html' }); $locationProvider.html5Mode(true); } })(); 我在html中设置了基本的URL: <base href="/app/" />
我遇到同样的问题,在我的情况下,未定义的“url”参数传递给trimEmptyHash()最终来自于$$位置上的$$absUrl属性未被初始化的事实.进一步挖掘,似乎$$absUrl通常在$$compose()方法中初始化,通常从$$parse()调用,通常从$$parseLinkUrl()方法调用.这里是$$parseLinkUrl()(看Angular 1.4.1):
this.$$parseLinkUrl = function(url,relHref) { if (relHref && relHref[0] === '#') { // special case for links to hash fragments: // keep the old url and only replace the hash fragment this.hash(relHref.slice(1)); return true; } var appUrl,prevAppUrl; var rewrittenUrl; if ((appUrl = beginsWith(appBase,url)) !== undefined) { prevAppUrl = appUrl; if ((appUrl = beginsWith(basePrefix,appUrl)) !== undefined) { rewrittenUrl = appBaseNoFile + (beginsWith('/',appUrl) || appUrl); } else { rewrittenUrl = appBase + prevAppUrl; } } else if ((appUrl = beginsWith(appBaseNoFile,url)) !== undefined) { rewrittenUrl = appBaseNoFile + appUrl; } else if (appBaseNoFile == url + '/') { rewrittenUrl = appBaseNoFile; } if (rewrittenUrl) { this.$$parse(rewrittenUrl); } return !!rewrittenUrl; }; 在我的情况下,最终的“if”子句没有触发对$$解析的调用,因为“rewrittenUrl”从来没有得到一个值,因为中间的if / else if子句都没有解决为true.在我的情况下,这是因为我用于提供应用程序(CompanyName / admin.html)的URL实际上高于我为应用程序设置的基准Href(CompanyName / admin /),因此没有条件解决为true .一旦我将基准Href更改为CompanyName /,我就不再遇到这个问题. 或者,您可以在位置原型上初始化$$absUrl,或者从Angular – watch this issue等待某种修复,并查看joelmdev于3月30日提出的解决方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |