如何在AngularJS中为`config`注入``window`对象

时间:2015-06-21 06:38:26

标签: angularjs

我正在尝试将$window对象注入AngularJS中的config方法,但我一直收到错误...

这样做的正确方法是什么?

这是我的代码:

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

2 个答案:

答案 0 :(得分:81)

您无法向配置注入<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:color="#00000000"/> <size android:height="1dp"/> </shape> 服务,因为尚未在配置时初始化服务。但是,您可以注入提供者并获取实例。在你的情况下:

$window

答案 1 :(得分:11)

只能在配置块中注入 常量和提供程序 $window 服务 。 &安培;执行配置块时可能无法使用或配置,因此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];
   }
  })