2016-11-11 4 views
0

Я пытаюсь использовать функцию разрешений в моем провайдере состояния i-router. Я настроил его следующим образом:Угловой JS-маршрутизатор не разрешает вызов службы

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

Try давая это

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); 
         }) 
       } 

Позвольте мне знать, если это работает

Смежные вопросы