在Controller中使用AngularJS服务

时间:2017-01-05 23:32:31

标签: angularjs service controllers

服务:

app.service('myService', ['$scope', '$timeout', function($scope, $timeout){
   return {
      fn: function(messageTitle, messageContent) {
        $timeout(function() {
            $scope.fadeMessageSuccess = true;
        }, 3000);
      }
   }
}]);

控制器:

app.controller("AccountCtrl", ["$scope", "Auth", "$timeout", "myService",
  function($scope, Auth, $timeout, myService) {
    myService.fn();
    $scope.createUser = function() {
      $scope.message = null;
      $scope.error = null;

      // Create a new user
      Auth.$createUserWithEmailAndPassword($scope.accountEmailAddress, $scope.accountPassword)
        .then(function(firebaseUser) {
          $scope.message = "User created with uid: " + firebaseUser.uid;
          console.log($scope.message);
        }).catch(function(error) {
          $scope.error = error;
          console.log($scope.error);
        });
    };
  }
]);

我正在尝试创建一个服务,以便我可以在多个控制器中使用一个功能,但我很难让第一个工作。这是我在控制台中收到的错误消息:

angular.js:13550Error: [$injector:unpr]

2 个答案:

答案 0 :(得分:0)

只是一个观察:当你打电话时,看起来你没有把任何东西传递给这个功能。并且不确定您是否想要为服务添加更多功能,但我认为您可以直接返回该功能并只调用“myService(title,content);”。但我不认为这些问题会导致你遇到的问题。

答案 1 :(得分:0)

当您尝试使用.factory()时,看起来您正在尝试返回一个对象(一个.service()函数)。 Here is a dead simple explanation for .factory, .service, and .provider

正如user2341963所指出的,将$scope注入服务并没有多大意义。

此外,您确定所有依赖项都已定义并可供Angular使用吗?

Here is an example Plunkr在控制器中使用服务。