以编程方式添加路由后,当访问任何路由时,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)
我只是对角度很陌生,但任何帮助将不胜感激。
在检查第 2361 行上的角度 ui 路由器的源时(这是您的错误报告显示的地方):
if (states.hasOwnProperty(name)) throw new Error("State '" + name + "' is already defined");
这意味着 U 不能两次注册具有相同名称的状态。
但是,当您返回到以前的状态时,您的 addState($url_name) 可能会再次执行。这将导致重复状态名称错误。
顺便说一句,我认为动态设置状态不是一个好主意。如果您坚持这样做,也许在添加之前检查州名是否已存在。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 多个单选按钮组相互干扰
- 谷歌地图Api按钮;路由到标记“/转到谷歌地图
- 使用纸质按钮点击事件进行路由
- AngularJS仅在浏览器的后退按钮上重定向路由
- AngularJS使用下一个/上一个按钮递增/递减当前路由
- Ember.js路由和后退按钮问题
- 主干路由 – 检测浏览器后退按钮按下
- 即使没有嵌套路由,Ember Rails 后退按钮也不会呈现模板
- 带有 AngularJS 和路由参数的后退按钮循环
- AngularJS滑块-路由问题(我无法正确路由我的按钮/页面)
- Vue.js带后退按钮的路由
- 带Angular js编辑按钮的Laravel路由参数
- AngularJS为后退按钮的路由添加内容
- AngularJS强制返回按钮路由
- Angular UI路由器,路由解析刷新按钮
- Ionic后退按钮用于路由/查看
- 以编程方式添加路由后,当访问任何路由时,angular 会在按下后退按钮时引发错误
- 浏览器后退按钮上未调用主干路由处理程序