Подтвердить что ты не робот

Как "вставлять" `$ window` объект в` config` в angular

Я пытаюсь внедрить объект $window в метод config в angular, но я продолжаю получать ошибку.

Каков правильный способ сделать это?

вот мой код:

angular.module('myApp', ['$window']) //is this wrong?

  .config(function ($window) { //this is not the way?
      console.log($window); //console.log fails //error
  })

  .controller("main", function($scope) {
    $scope.index = 0;
    $scope.num = number[$scope.index];

   $scope.increase = function () {
     $scope.index += 1;
     $scope.num = number[$scope.index];
   }
})

Live Demo

4b9b3361

Ответ 1

вы не можете внедрить службу $window в конфигурацию, поскольку службы еще не инициализируются в момент конфигурации. однако вы можете ввести их поставщикам и получить экземпляр. в вашем случае:

angular.module('myApp', [])

 .config(function ($windowProvider) {
   var $window = $windowProvider.$get();
   console.log($window);
 })

Ответ 2

Только константы и поставщики могут быть введены в блок конфигурации. $window - служба. и он может быть недоступен или настроен при выполнении блока конфигурации, поэтому angular не позволяет ему использовать его.

Вы можете использовать блок выполнения. Это действует как основной метод для вашего приложения angular. Это выполняется непосредственно перед созданием приложения. К моменту выполнения блока выполнения вся служба будет завершена и будет готова к вводу. Таким образом, вы можете использовать $window, как показано ниже,

angular.module('myApp', ['$window']) 

  .run(function ($window) { //use run rather than config
      console.log($window); 
  })

  .controller("main", function($scope) {
    $scope.index = 0;
    $scope.num = number[$scope.index];

   $scope.increase = function () {
     $scope.index += 1;
     $scope.num = number[$scope.index];
   }
  })