То, что хорошо работало в прежних проектах, вызывает ошибку в текущем проекте. У меня есть несколько сервисов для различных задач:
angular.module('myApp')
.service('test1', function() {
return {
sayHello : function() {
return ("Hello!");
}
};
})
.service('test2', function() { //this line causes the error
return {
sayHi : function() {
return ("Hi!");
}
};
})
.service('test3', function() {
...
})
Когда я включаю этот файл в свой проект, я получаю следующее сообщение об ошибке в строке с ".service(" test2 ", function()...":
Uncaught TypeError: undefined не является функцией
Что бы я ни делал - второй метод всегда вызывает эту ошибку. Похоже, что первый метод службы не возвращает объект? Благодарю!
Теперь я выяснил, в чем проблема. Я работаю над приложением, которое было запущено кем-то другим (CLIP-TWO Theme), который определил все сервисы в качестве поставщиков в своем файле конфигурации маршрутизатора. Это происходит так:
app.service = $provide.service;
Когда я сейчас определяю свои службы, первый будет работать, а второй - нет, потому что второй из них не в области приложения, а в области поставщика. Поэтому мне пришлось изменить определение моего сервиса следующим образом:
var app = angular.module('myApp'); // this is already done in the main js.
// define all services separately
app.service('test1', function() {...});
app.service('test2', function() {...});
app.service('test3', function() {...});
Похоже, что вам не хватает некоторых закрывающих скобок, поэтому ошибка, которая, как представляется, происходит во второй службе, на самом деле вызвана синтаксической ошибкой в первой службе.
Попробуй это:
angular.module('myApp')
.service('test1', function() {
return {
sayHello : function() {
return ("Hello!");
}
};
})
.service('test2', function() {
return {
sayHi : function() {
return ("Hi!");
}
};
});
Попытайтесь объявить методы обслуживания с этим.
angular.module('myApp')
.service('test1', function() {
this.sayHello = function() {
return 'Hello';
};
});