0
我需要在控制器加載之前解析控制器中的數據。所以我決定在路由器上這樣做。但我想知道如何做到這一點,不要在路由器和控制器之間分離邏輯。所以我做了一些研究,並找出託德座右銘表明,在控制器創建resolve
功能,比路由器使用它:如何更好地解決Angular + ui-router中的控制器的數據
main.controller.coffee
(->
Main = (someService) ->
@data = someService.data
return
Main.resolve =() ->
someService: (someService) ->
someService.getAll()
Main
.$inject = ['someService']
angular
.module('app')
.controller('Main', Main)
)()
app.routes.coffee
(->
routes = ($stateProvider, $urlRouterProvider) ->
$urlRouterProvider.otherwise "/home"
$stateProvider
.state 'main',
url: '/'
templateUrl: 'app/layout/main.html'
resolve: Main.resolve
controller: 'Main'
controllerAs: 'main'
routes.$inject = ['$stateProvider', '$urlRouterProvider']
angular
.module('app')
.config(routes)
)()
問題是,當我將所有模塊包裹在一個IIFE(爲了避免污染全局名稱空間)時,主控制器在路由器中不可訪問(未定義)。有人能告訴我如何解決這個問題嗎?
您可以從您的控制器分離的決心功能,使解決內部的一些登錄和其追加到$範圍,那麼它應該是從你的控制器訪問。 – 2015-02-24 09:04:43
Avraam,我需要從主控制器的解決方案可以像這樣解決路由器到達:Main.resolve – 2015-02-24 09:51:21