Angular ui router:从onEnter调用控制器上的方法

时间:2013-12-15 21:23:57

标签: angularjs angular-ui-router

我的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吗?

1 个答案:

答案 0 :(得分:2)

您当然可以访问$stateParams中的onEnter以及任何其他服务。但是,没有办法注入当前或父(或任何其他)控制器实例。

因此,虽然您无法以这种方式在控制器上调用方法,但您可以使用onEnterresolve来预处理某些内容,并可能使用list.select的标记来检查和叫那个方法。

使用服务协调此功能也可能更有意义,但我不知道您的方法的目的,所以我需要了解更多。