2013-12-15 33 views
9

我的UI路由器的配置是这样的:角UI路由器:呼吁控制方法从的OnEnter

$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吗?

回答

2

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

所以,虽然你不能调用控制器上的方法,这样,你就可以使用onEnterresolve预处理的东西,也许用一个标志list.select检查和调用该方法。

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

+0

我通过在状态配置上使用解析来解决问题。不是试图在控制器上调用方法,而是使用状态配置解析参数来解析控制器所需的数据 – rekna

+7

@rekna您能否提供您的示例?我正在运行相同的情况。谢谢 – jmcollin92