Как зарегистрировать функцию на $rootScope на готовом угловом

Мне нужно зарегистрировать метод, доступный везде в angularjs. Этот метод имеет 2 аргумента (идентификатор ресурса, обратный вызов при успешном удалении), и он использует поставщика ресурсов для фактического удаления элемента.

Затем, чтобы зарегистрировать его, мне нужно, чтобы angularjs вводил меня $rootScope и MyResourceProvider. Моя первая идея заключалась в том, чтобы сделать это в моем контроллере домашней страницы:

    var HomeCtrl = function ($rootScope, MyResourceProvider) {
        $rootScope.confirmAndDeletePackage = function (sId, fCallback) {
            // do some stuff
            MyResourceProvider.delete({id: sId}, fCallback);
        }
    }

Здесь действительно начинается моя проблема. Это нормально работает в обычной навигации (home → list → select → delete), но если пользователь обращается непосредственно к странице, на которой доступна кнопка удаления, без доступа к домашней странице, этот метод будет недоступен (потому что HomeController не был инициализирован)...

Итак, мой вопрос в том, где я могу переместить этот фрагмент кода, чтобы он всегда выполнялся в бутстрапе приложения.

Я пробовал myApp.config(), но без успеха...

Любая идея?

Ответ 1

Как упоминает в комментариях @ganaraj, услуга, вероятно, является лучшим выбором для этого.

Однако, чтобы ответить на ваш вопрос, вы можете использовать метод run().

myApp.run(function($rootScope, MyResourceProvider) {
    $rootScope.confirmAndDeletePackage = function (sId, fCallback) {
        // do some stuff
        MyResourceProvider.delete({id: sId}, fCallback);
    }
})

run() вызывается после загрузки всех модулей.