4

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

由于我认为构建具有不同独立模块的 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
});
4

3 回答 3

3

工厂没有$scope

如果你删除$scope并只保留$rootScope它就可以了

于 2013-10-16T09:22:41.400 回答
1

您可以从工厂声明中删除$scope和。这是一个笨蛋$rootScope

于 2013-10-16T09:28:22.050 回答
0

定义你注入的对象名称,让 Angular 知道将什么注入到字段中:

app.controller("myCtrl", ['$scope', 'MyFactory', function($scope, MyFactory) {
  MyFactory.myFunction();
}]);

这是一个很好的做法,特别是如果您要编译您的应用程序。

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

于 2013-10-16T09:21:52.127 回答