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

rek*_*kna 9 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( ) { ... }
    });
Run Code Online (Sandbox Code Playgroud)

list.select状态使用与列表状态相同的控制器.如何从onEnter函数调用控制器上的方法?请注意,我使用"ctrl as vm"语法!我还可以在这里访问$ stateParams吗?

Hac*_*ese 2

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

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

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

  • @rekna 你能提供你的例子吗?我正在同样的情况下运行。谢谢 (7认同)