【发布时间】:2015-01-30 08:48:52
【问题描述】:
我的视图会自动重定向到默认(否则)视图,我不知道为什么。当我单击时,它会从 View1 转到 View2,然后自动重定向到默认的 View3。我通过把
console.log() 在 View2
View1 -> View2 -> View3
myApp.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('view1', {
url: "/view1",
templateUrl: "App/Views/start/view1.html",
controller: 'MyController'
})
.state('view2', {
url: "/view2/:details",
templateUrl: "App/Views/start/view2.html",
controller: 'MyController'
});
$urlRouterProvider.otherwise('/view3');
});
我像这样打电话给$state.go。
$state.go('view2', { details: JSON.stringify(response.details) });
我试图通过阻止$stateChangeStart 的默认设置来拦截它,但遇到了错误:
$digest() 达到了迭代次数。中止
这是由于$urlRouterProvider 和$stateProvider 之间的交互问题造成的,如here 所述。但即使我拦截成功,我也不确定这是否是正确的方法。那么究竟是什么原因造成的呢?或者我怎样才能找出导致重定向的原因。顺便说一句,我已经检查了$stateChangeError,但没有。
myApp.controller('MyController', ['$scope', '$stateParams', '$state', function ($scope, $stateParams, $state) {
$scope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.name == "view3" && fromState.name == "view2") {
event.preventDefault();
}
});
});
【问题讨论】:
-
如果您发布 'tab.congratulations' 的内容会很有用,这显然是问题的原因。
-
我认为问题的原因是HTML,你能分享一下html代码
-
我很确定,这不是 HTML,因为我也测试了一个空模板,它的行为方式相同。我严重怀疑它是否与路由参数有关。也很抱歉存在差异,我将所有视图名称更改为通用名称,但忘记更改了。我已经编辑了这些差异。
-
如果您可以发布一个 plunker,那么我们可能会更快地找到错误,我认为这里没有足够的信息。
-
嗯,问题是我正在使用 Ionic 框架来开发一个混合移动应用程序,我不确定是否能够在 Plunkr 上重现相同的错误。如果您能指导我完成如何调试,我将不胜感激。
标签: javascript angularjs redirect angular-routing