У меня есть Сервис:
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