angularjs app.service (…) вызывает «Uncaught TypeError: undefined не является функцией»

0

То, что хорошо работало в прежних проектах, вызывает ошибку в текущем проекте. У меня есть несколько сервисов для различных задач:

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 не является функцией

Что бы я ни делал - второй метод всегда вызывает эту ошибку. Похоже, что первый метод службы не возвращает объект? Благодарю!

Теги:

3 ответа

0
Лучший ответ

Теперь я выяснил, в чем проблема. Я работаю над приложением, которое было запущено кем-то другим (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() {...});
2

Похоже, что вам не хватает некоторых закрывающих скобок, поэтому ошибка, которая, как представляется, происходит во второй службе, на самом деле вызвана синтаксической ошибкой в первой службе.

Попробуй это:

angular.module('myApp')
.service('test1', function() {
    return {
        sayHello : function() {
             return ("Hello!");
        }
    };      
})
.service('test2', function() {
    return {
        sayHi : function() {
             return ("Hi!");
        }
    };      
});
  • 0
    Спасибо - я сменил образец. Извините, в реальном коде нет пропущенных скобок. Это все еще не работает.
0

Попытайтесь объявить методы обслуживания с этим.

angular.module('myApp')
  .service('test1', function() {
    this.sayHello = function() {
        return 'Hello';  
  };    
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню