我的ui路由器配置是这样的:
$stateProvider
.state("list",{url:"/list",templateUrl:"list.html",controller:"ctrl as vm"})
.state("list.select",
url:'/select',
templateUrl:'select.html',
onEnter:function( ) { ... }
});
list.select状态使用与列表状态相同的控制器。如何从onEnter函数调用控制器上的方法?请注意,我使用“ctrl as vm”语法!我还可以在这里访问$ stateParams吗?
答案 0 :(得分:2)
您当然可以访问$stateParams
中的onEnter
以及任何其他服务。但是,没有办法注入当前或父(或任何其他)控制器实例。
因此,虽然您无法以这种方式在控制器上调用方法,但您可以使用onEnter
或resolve
来预处理某些内容,并可能使用list.select
的标记来检查和叫那个方法。
使用服务协调此功能也可能更有意义,但我不知道您的方法的目的,所以我需要了解更多。