Я не могу получить доступ к сервисам - PullRequest
0 голосов
/ 06 февраля 2020

Это приложение angulars. У меня есть служба, объявленная следующим образом:

define([], function() {
    function myService(anotherService, alerts) {
        //doing stuff here
        this.callMe = function(msg){
            myfunc(msg)
        }
    }

    function myfunc(msg) {
        alerts.Success(msg);
    }

    myService.$inject = ['anotherService', 'alerts'];
    return myService;
});

Я запускаю службу и в какой-то момент вызываю в ней функцию:

myService.callMe("hello");

Введенные службы (в данном случае одна названные "оповещения") не определены. Если я вызываю их изнутри функции "callMe", то это работает. По какой-то причине этот сервис был построен таким образом, что функция "myfun c" была объявлена ​​вне "myService". Я не уверен, что это было сделано таким образом. Если я перенесу его внутрь сервиса, то у меня возникнет ошибка с модулем require. Что ты предлагаешь? Есть ли способ для функции за пределами объявления службы для доступа к внедренным службам?

1 Ответ

1 голос
/ 06 февраля 2020

Один из подходов заключается в добавлении внедренного сервиса в качестве параметра:

define([], function() {
    function myService(anotherService, alerts) {
        //doing stuff here
        this.callMe = function(msg){
            ̶m̶y̶f̶u̶n̶c̶(̶m̶s̶g̶)̶
            myfunc(alerts, msg)
        }
    }

    ̶f̶u̶n̶c̶t̶i̶o̶n̶ ̶m̶y̶f̶u̶n̶c̶(̶m̶s̶g̶)
    function myfunc(alerts, msg) {
        alerts.Success(msg);
    }

    myService.$inject = ['anotherService', 'alerts'];
    return myService;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...