角度视图自动重定向到默认(否则)视图
Angular View automatically redirecting to default (otherwise) view
我的视图会自动重定向到默认(否则(视图,我不知道为什么。当我单击时,它从视图 1 转到视图 2,然后自动重定向到默认视图 3。我通过放 视图中的console.log()
2
视图 1 -> 视图 2 -> 视图 3
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
之间的交互问题,如此处所述。但即使我成功拦截了它,我也不确定这是否是正确的方法。那么究竟是什么原因造成的呢?或者我如何找出导致重定向的原因。顺便说一句,我已经检查了$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();
}
});
});
我认为您的响应.details具有非url编码字符,使路由提供商认为您正在导航到更深的页面,即 var response = {details:'bar/foo'};
实际上是导航到/view2/bar/foo
触发您的其他方式。
这是在黑暗中拍摄的,但请尝试将$urlRouterProvider放在$stateProvider之前。 我认为可能发生的情况是 $urlRouterProvider.else(( 充当观察者的所有捕获,但当它在范围内时,所有路由都已经运行完毕。 这意味着即使$stateProvider工作并向正确的 URL 发送请求,$urlRouterProvider.else(( 也会捕获请求,就好像这没有发生一样,并将其发送到默认页面。
如果我理解你的问题,你想知道先在哪里调试。我建议添加一个控制台.log为您的 response.details,因为您没有在您的问题中提供它。
我不认为这是您的定义中的操作顺序问题,因为当您调用 $state.go(( 时,您说这是在单击时发生的。在您执行此操作的那一刻,路由器将尝试查找并处理您请求的状态。由于您的州具有 URL,因此它还会尝试使用您提供的参数将用户发送到该 URL。
由于您的故障发生在此时,因此最合乎逻辑的解释是您的目标路由无法访问,或者路由器认为无法访问。由于您的路由包含参数,这很可能意味着路由器不接受您的参数 - 此路径设置为需要该参数,因此如果它不存在(或未通过验证(,您将触发 .else((。
您可以通过简单地从 state2 的 URL 中删除参数来轻松排除这种情况。当然你想要它,但如果删除它可以让您达到状态,那么它就是参数。如果删除它仍然不允许你到达那里,它是另一回事,你需要在 $state.go(( 调用中设置一个断点,并找出它拒绝你的地方。确保在执行此操作时使用未缩小的文件。
- 如何设置默认<ui视图>在另一<ui视图>
- 如何在默认情况下将主干视图设置为singleton
- 将范围添加到角度种子默认视图控制器时,测试套件现在失败
- 更改ng包含或定义默认ui视图
- 如何设置默认视图位置(铯1.6)
- MVC 3,剃刀视图 - 覆盖默认表单帖子
- 更改完整日历的议程日视图中的默认事件宽度
- KML 在加载后覆盖默认视图
- 详细信息视图 ASP.Net 取消客户端的默认编辑模式
- 角度视图自动重定向到默认(否则)视图
- 如果数据字段为空,如何在视图中显示默认值,以角度.js表示
- 默认情况下,引导菜单在移动视图中不折叠
- HTML DOM 从哪里开始?窗?公文?文档默认视图
- 什么'这是文档的要点.默认视图
- Geogebra Javascript - 如何为在图形视图中创建的每个数学对象默认没有标题
- 获取threejs场景和相机方向以设置默认视图
- 如何通过JS在Sharepoint 2013列表视图中触发默认渲染Link
- 谷歌地图地形视图默认
- EmberJS -设置选择视图的默认值
- 主干视图默认值$el