未知提供者:$ scopeProvider initialling angularjs application

时间:2016-09-04 11:10:49

标签: javascript angularjs

我收到此错误未知提供商:$ scopeProvider< - $ scope

以下app.js

(function() {
angular.module('MyApp', ['ngRoute', 'satellizer'])
  .config(function($routeProvider, $locationProvider, $authProvider) {
    $locationProvider.html5Mode(true);

    $routeProvider
      .when('/', {
        templateUrl: 'partials/home.html'
      })
  })
  .run(function($rootScope, $scope, $window, $location) {
    if ($window.localStorage.user) {
      $rootScope.currentUser = JSON.parse($window.localStorage.user);
    }

    $scope.test = 'test';

  });
})();

1 个答案:

答案 0 :(得分:1)

您无法将$scope注入应用程序运行功能。

  

您只能将$ rootScope注入服务并运行函数,因为每个子作用域都是从其父作用域继承的,而顶级作用域是rootScope。因为注入任何范围都是不明智的。仅提供根范围。

https://stackoverflow.com/a/17371896/3453034

以下是有关从Angular's module documentation获取的运行块的一些信息:

  

运行块是Angular中与main方法最接近的东西。运行块是需要运行以启动应用程序的代码。在配置完所有服务并创建注入器后执行。运行块通常包含难以进行单元测试的代码,因此应在隔离模块中声明,以便在单元测试中忽略它们。

您可以在运行方法中设置$rootScope.test = "test",将$rootScope注入控制器,然后通过$rootScope直接在控制器中访问它。