以编程方式添加路由后,当访问任何路由时,angular 在按下后退按钮时抛出错误
After adding a route programmatically, when any route is accessed, angular throws an error when back button is pressed
我的问题是,在添加以下代码(向我的 Web 应用程序添加动态路由)后,我的后退键抛出了一个我无法诊断的错误。
这是我前段时间遇到的一个添加此功能的简单提供程序方法:
myApp.provider('$dashboardState', function($stateProvider){
this.$get = function($state){
return {
addState: function(title) {
$stateProvider.state(title, {
url: '/' + title,
templateUrl: "templates/" + title + '.html'
});
}
}
}
})
然后我可以在我的任何控制器中添加到我的 ui-路由器的路由,如下所示:
//variable $urlName is fetched previously and is just a string
$url_name = $urlName;
$dashboardState.addState($url_name);
然而,当我这样做时,我通过单击重定向到我动态创建的路线:
<a href="#/" + $urlName + "\">
在我的 html 中,它运行完美,除了当我在浏览器中单击后退键时,控制台抛出此错误:
[Error] Potentially unhandled rejection [1]
registerState@http://epicbiz.shotsevolved.com/js/angular-ui-router.js:2361:53
state@http://epicbiz.shotsevolved.com/js/angular-ui-router.js:2871:18
addState@http://epicbiz.shotsevolved.com/js/app.js:22:37
http://epicbiz.shotsevolved.com/js/app.js:163:34
j@http://epicbiz.shotsevolved.com/js/built.min.js:13:3777
O@http://epicbiz.shotsevolved.com/js/built.min.js:13:3464
when@http://epicbiz.shotsevolved.com/js/built.min.js:13:6577
run@http://epicbiz.shotsevolved.com/js/built.min.js:13:5616
n@http://epicbiz.shotsevolved.com/js/built.min.js:11:25298
_drain@http://epicbiz.shotsevolved.com/js/built.min.js:11:25476
drain@http://epicbiz.shotsevolved.com/js/built.min.js:11:25250
r@http://epicbiz.shotsevolved.com/js/built.min.js:6:13467
(anonymous function) (built.min.js:13:707)
r (built.min.js:13:328)
c (built.min.js:13:592)
我只是 angular 的新手,但如有任何帮助,我们将不胜感激。
在第 2361 行检查 angular-ui-router 的源代码时(这是您的错误报告所说的地方):
if (states.hasOwnProperty(name)) throw new Error("State '" + name + "' is already defined");
这意味着你不能用相同的名称注册状态两次。
然而,当你回到之前的状态时,你的 addState($url_name) 可能会再次被执行。这将导致重复状态名称错误。
顺便说一句,我不认为动态设置状态是个好主意。如果你坚持这样做,也许在添加之前检查状态名称是否已经存在。
我的问题是,在添加以下代码(向我的 Web 应用程序添加动态路由)后,我的后退键抛出了一个我无法诊断的错误。
这是我前段时间遇到的一个添加此功能的简单提供程序方法:
myApp.provider('$dashboardState', function($stateProvider){
this.$get = function($state){
return {
addState: function(title) {
$stateProvider.state(title, {
url: '/' + title,
templateUrl: "templates/" + title + '.html'
});
}
}
}
})
然后我可以在我的任何控制器中添加到我的 ui-路由器的路由,如下所示:
//variable $urlName is fetched previously and is just a string
$url_name = $urlName;
$dashboardState.addState($url_name);
然而,当我这样做时,我通过单击重定向到我动态创建的路线:
<a href="#/" + $urlName + "\">
在我的 html 中,它运行完美,除了当我在浏览器中单击后退键时,控制台抛出此错误:
[Error] Potentially unhandled rejection [1]
registerState@http://epicbiz.shotsevolved.com/js/angular-ui-router.js:2361:53
state@http://epicbiz.shotsevolved.com/js/angular-ui-router.js:2871:18
addState@http://epicbiz.shotsevolved.com/js/app.js:22:37
http://epicbiz.shotsevolved.com/js/app.js:163:34
j@http://epicbiz.shotsevolved.com/js/built.min.js:13:3777
O@http://epicbiz.shotsevolved.com/js/built.min.js:13:3464
when@http://epicbiz.shotsevolved.com/js/built.min.js:13:6577
run@http://epicbiz.shotsevolved.com/js/built.min.js:13:5616
n@http://epicbiz.shotsevolved.com/js/built.min.js:11:25298
_drain@http://epicbiz.shotsevolved.com/js/built.min.js:11:25476
drain@http://epicbiz.shotsevolved.com/js/built.min.js:11:25250
r@http://epicbiz.shotsevolved.com/js/built.min.js:6:13467
(anonymous function) (built.min.js:13:707)
r (built.min.js:13:328)
c (built.min.js:13:592)
我只是 angular 的新手,但如有任何帮助,我们将不胜感激。
在第 2361 行检查 angular-ui-router 的源代码时(这是您的错误报告所说的地方):
if (states.hasOwnProperty(name)) throw new Error("State '" + name + "' is already defined");
这意味着你不能用相同的名称注册状态两次。
然而,当你回到之前的状态时,你的 addState($url_name) 可能会再次被执行。这将导致重复状态名称错误。
顺便说一句,我不认为动态设置状态是个好主意。如果你坚持这样做,也许在添加之前检查状态名称是否已经存在。