angular.js - angularjs ui-router 路由嵌套问题:如何阻止子页面再次运行父页面的Controller?
本文介绍了angular.js - angularjs ui-router 路由嵌套问题:如何阻止子页面再次运行父页面的Controller?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
A
页面有三个子页面a
,b
,c
作为三个tab;
其他页面跳到A
页面时,默认会先跳到a
;
我的实现如下
//其他页面
$state.go('A')
// A页面
function Ctrl($state){
// ...
this.$onInit = function(){
// ...
$state.go('A.a')
console.log('init') // 这句会输出两次
}
}
问题就是$state.go('A.a')
之后,还会执行一次Ctrl,请问如何避免跳到子路由时再执行Ctrl
补充: 除了修改其他页面的跳转为$state.go('A.a')
之外的方法,页面有点多,懒得改了。。。
解决方案
如果你用的是ui-router 1.0.* 的版本的话,可以在路由A
的配置文件的stateObject中增加一个redirectTo
字段,其意义指的是当跳转到当前路由后,自动重定向到xx路由,比如你这里就可以这么写:
{
name: 'A,
redirectTo: 'A.a'
...
}
这样就可以省掉你将其他页面所有跳转改为$state.go('A.a')
的工作量了,同时这个属性还支持参数、promise等格式,可以满足动态重定向的逻辑,具体可以参照官方文档。
这篇关于angular.js - angularjs ui-router 路由嵌套问题:如何阻止子页面再次运行父页面的Controller?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文