2016-11-11 57 views
0

我試圖用解決功能在我的UI路由器狀態提供。 我如下配置的:AngularJS UI路由器無法解決服務呼叫

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) { 
... 
$stateProvider.state('expositions', { 
     url: '/Expositions', 
     views: { 
      "container": { 
       templateUrl: '/views/expositions.html', 
       resolve: { 
        expositions: function ($http) { 
         return $http.get('/api/site/expositions').then(
          function (response) { 
           console.log("DATA", response.data); 
           return response.data; 
          }, 
          function (error) { 
           console.log("ERROR", error); 
          }) 
        } 
       } 
      } 
     } 
    }) 
... 
} 

在這種情況下,當我點擊鏈接論述的決心不叫,不進行導航:什麼也沒有發生。

我也嘗試了與工廠的配置(一個資源服務)如下:

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) { 
... 
$stateProvider.state('expositions', { 
     url: '/Expositions', 
     views: { 
      "container": { 
       templateUrl: '/views/expositions.html', 
       resolve: { 
        expositions: function (Resources) { 
         console.log("DATA", Resources); 
         return Resources.expositions(); 
        } 
       } 
      } 
     } 
    }) 
... 
} 

資源服務在一個單獨的文件中定義如下:

resourcesService.js

(function() { 
    'use strict'; 

    angular 
     .module('site') 
     .factory('Resources', ['$resource', 
      function ($resource) { 
       return $resource('/api/site/:action/:id', {}, { 

        ... 

        expositions: { 
         method: 'GET', 
         params: { action: "expositions" }, 
         isArray: true 
         //transformResponse: function (data) { 
         // return angular.fromJson(data).list 
         //} 
        }, 

        ... 
       }); 
      } 
     ]); 
})(); 

此外,在這種情況下,什麼也沒有發生,解析函數沒有被調用。

我錯過了什麼?

非常感謝!

回答

1

嘗試給這個

expositions: ['$http',function ($http) { 

像這樣的事情

resolve: { 
       expositions: ['$http',function ($http) { 
        return $http.get('/api/site/expositions').then(
         function (response) { 
          console.log("DATA", response.data); 
          return response.data; 
         }], 
         function (error) { 
          console.log("ERROR", error); 
         }) 
       } 

讓我知道如果這個工作