2017-01-05 5 views
0

Услуги:Использование AngularJS службы в контроллере

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] 
+0

Использование недопустимого файла angularjs должно содержать более подробное сообщение об ошибке. – Jukebox

+0

См. [Этот пост] (http://stackoverflow.com/questions/22898927/injecting-scope-into-an-angular-service-function). Внедрение '$ scope' в службу не имеет смысла. – user2718281

ответ

0

Просто наблюдение: не похоже, вы передаете ничего функции, когда вы вызываете его. И не уверен, хотите ли вы добавить какие-либо дополнительные функции в службу, но я думаю, что вы можете напрямую вернуть функцию и просто вызвать «myService (title, content);». Но я не думаю, что эти проблемы вызовут то, с чем вы сталкиваетесь.

0

Похоже, вы пытались вернуть объект (a la the .factory()), когда вы пытались использовать .service(). Here is a dead simple explanation for .factory, .service, and .provider.

Как указал пользователь2341963, ввод $scope в услугу не имеет особого смысла.

Кроме того, вы уверены, что все ваши зависимости определены и доступны для Углового?

Here is an example Plunkr Использование службы в контроллере.