У меня есть Сервис:
angular.module('cfd')
  .service('StudentService', [ '$http',
    function ($http) {
    // get some data via the $http
    var path = 'data/people/students.json';
    var students = $http.get(path).then(function (resp) {
      return resp.data;
    });     
    //save method create a new student if not already exists
    //else update the existing object
    this.save = function (student) {
      if (student.id == null) {
        //if this is new student, add it in students array
        $scope.students.push(student);
      } else {
        //for existing student, find this student using id
        //and update it.
        for (i in students) {
          if (students[i].id == student.id) {
            students[i] = student;
          }
        }
      }
    };
Но когда я звоню save(), у меня нет доступа к $scope, а get ReferenceError: $scope is not defined. Итак, логический шаг (для меня) заключается в предоставлении save() с помощью $scope, и поэтому я должен также предоставить/вставить его в service. Поэтому, если я так делаю:
  .service('StudentService', [ '$http', '$scope',
                      function ($http, $scope) {
Я получаю следующую ошибку:
Ошибка: [$ injector: unpr] Неизвестный поставщик: $scopeProvider < - $scope < - StudentService
Ссылка в ошибке (wow, которая является опрятной!) позволяет мне знать, что это связано с инжектором и может иметь отношение к порядку объявления js файлов. Я попытался переупорядочить их в index.html, но я думаю, что это нечто более простое, например, как я их ввожу.
Использование Angular -UI и Angular -UI-Router