2016-09-08 46 views
1

$stateProvider狀態我想:如何加載服務,解析函數並將數據通過ocLazyLoad狀態傳遞給控制器​​?

  • 負載服務JS文件
  • 解決服務函數(API調用)
  • 通行證產生的數據到控制器

控制器/我-controller.js

angular.module('app'). 
    controller('MyController', ['$scope', function($scope, serviceData){ 
     console.log(serviceData) 
}]); 

config.js

... 

.state('main', { 
    url: "/", 
    templateUrl: 'templates/my-template.html', 
    controller: 'MyController', 
    resolve: { 
     dependencies: ['$ocLazyLoad', function($ocLazyLoad) { 
      return $ocLazyLoad.load([ 
       'controllers/my-controller.js' 
      ]) 
     }], 
     serviceData: ['$ocLazyLoad', '$injector', function($ocLazyLoad, $injector) { 
      return $ocLazyLoad.load('services/my-service.js') 
       .then(function(){ 
        var $myService = $injector.get('MyService'); 
        return $myService.GetData(); 
       }) 
     }] 
    } 
}) 

我希望控制器console.log數據來從API調用的MyService不回(不包括爲簡潔,但部分作品)。相反,我得到undefined

任何想法? 謝謝!

回答

0

對於你的問題:

resolve: { 
     lazyLoad: function($ocLazyLoad, $injector) { 
      return $ocLazyLoad.load('component/my.controller.js').then(function() { 
      var $myService = $injector.get("myService"); 
       $myService.getData(); 
      }); 
      } 
     } 

和服務+控制器:

ctrl.controller('MyController', function($scope, $http, $window, 
    $rootScope, $stateParams, myService) { 
    console.log('into blog controller'); 
} 

.factory('myService', function($state, $rootScope, $http) { 
    return { 
     getData: function() { 
      console.log('into service'); 
      return $http.get(....); 
      } 
    } 
}) 

但是,從 「取」 請求數據之前,這種變化狀態是載入中...

我m試圖找到這個解決方案

任何ides?

相關問題