Javascript 访问AngularJS中同一模块中的工厂

Javascript 访问AngularJS中同一模块中的工厂,javascript,angularjs,Javascript,Angularjs,我想知道为什么我不能访问同一模块内的工厂 因为我认为构建一个具有不同独立模块的web应用程序更好,所以我想将所有方法(服务、工厂、指令等)分组到同一个模块中 我做错了什么 app = angular.module("MyGreatModuleProvider", []); app.factory("MyFactory", function($rootScope, $scope) { return { myFunction: function() { console.lo

我想知道为什么我不能访问同一模块内的工厂

因为我认为构建一个具有不同独立模块的web应用程序更好,所以我想将所有方法(服务、工厂、指令等)分组到同一个模块中

我做错了什么

app = angular.module("MyGreatModuleProvider", []);

app.factory("MyFactory", function($rootScope, $scope) {
  return {
    myFunction: function() {
      console.log("Hello World");
    }
  }
});

app.controller("myCtrl", function($scope, MyFactory) {
  MyFactory.myFunction();
  // This doesnt't work, unknown provider
});

定义注入的对象名称,让角度对象知道要注入到字段中的内容:

app.controller("myCtrl", ['$scope', 'MyFactory', function($scope, MyFactory) {
  MyFactory.myFunction();
}]);
这是一个很好的实践,尤其是当您要编译应用程序时


此外,正如其他人指出的:工厂没有$rootScope和$scope。

工厂没有
$scope


如果删除
$scope
并仅保留
$rootScope
它工作正常

则可以从工厂声明中删除
$scope
$rootScope