2013-12-15 49 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