2016-08-16 119 views
-2

我想使用一個解決方案,從我的控制器(利率控制器)中的費率服務前加載數據並獲得一個空白屏幕。 api可以工作,但是由於某種原因,當我一步步執行時,在執行過程中,它會跳過服務中的$ http.get方法: - /。有沒有人有任何建議如何解決這個問題?乾杯!解決方案不工作在角ui路由器

rates.contoller.js

(function() { 
'use strict'; 

angular.module('print.module').controller('ratesCtrl', ['ratesTest123', function (ratesTest123) { 
    console.log(ratesTest123); 
}] 
)})(); 

rates.service.js

(function() { 
'use strict'; 

angular.module('print.module').service('ratesService', ['$http', function ($http) { 
    vm = this; 

    function getRatesDataService() { 
     console.log("test"); 
     return this.$http.get("api/Rates/GetRates"); 
    } 

    //} 
}] 
) 
})(); 

print.module.js

(function() { 
"use strict"; 

var module = angular.module('print.module', [ 
    'ui.router', 
]); 
module.config(function ($stateProvider, $urlRouterProvider, $locationProvider) { 
    $urlRouterProvider.otherwise('/print'); 
    $stateProvider 
     .state('print', { 
      url: '/print', 
      templateUrl: "Public/scripts/sharedViews/printNavbar.html" 

     }) 
     .state('print.rates', { 
      url: "/rates", 
      controller: 'ratesCtrl', 
      templateUrl: "Public/scripts/rates/rates.view.html", 
      controllerAs: 'vm', 
      resolve: { 
        ratesTest123: ['ratesService', '$q', function (ratesService, $q) { 
         var deferred = $q.defer(); 
         ratesService.getRatesDataService().then(function (response) { 
          deferred.resolve(response.data); 
         }); 
         return deferred.promise; 
        }] 
       } 
     }) 

    $locationProvider.html5Mode(true); 
}); 

}()); 

視圖(僅供參考腳本標籤)

<body ng-app="print.module"> 
<div ui-view></div> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js"></script>    
    <script type="text/javascript" src="~/public/scripts/print.module.js"></script> 
    <script type="text/javascript" src="~/public/scripts/books/books.controller.js"></script> 
    <script type="text/javascript" src="~/public/scripts/terms/terms.controller.js"></script> 
    <script type="text/javascript" src="~/public/scripts/rates/rates.service.js"></script> 
    <script type="text/javascript" src="~/public/scripts/rates/rates.controller.js"></script> 
    <script type="text/javascript" src="~/public/scripts/services/modals.service.js"></script> 
</body> 

回答

3

分配getRatesDataService功能爲您服務

(function() { 
'use strict'; 

angular.module('print.module').service('ratesService', ['$http', function ($http) { 

    this.getRatesDataService = function() { 
     console.log("test"); 
     return $http.get("api/Rates/GetRates"); 
    } 

    //} 
}] 
) 
})(); 

,因爲它返回一個承諾,你可以簡單地做以下

resolve: { 
       ratesTest123: ['ratesService', function (ratesService) { 
        return ratesService.getRatesDataService() 
       }] 
      }