17

我需要在 angularjs 中注册一个随处可用的方法。此方法有 2 个参数(资源 id,删除成功时的回调),它使用资源提供者来实际删除项目。

然后注册它,我需要 angularjs 向我注入$rootScopeand MyResourceProvider。我的第一个想法是在我的主页控制器中执行此操作:

    var HomeCtrl = function ($rootScope, MyResourceProvider) {
        $rootScope.confirmAndDeletePackage = function (sId, fCallback) {
            // 做一些事情
            MyResourceProvider.delete({id: sId}, fCallback);
        }
    }

这里开始实际上我的问题。这在常规导航(主页 -> 列表 -> 选择 -> 删除)中工作正常,但如果用户直接访问删除按钮可用的页面,而无需通过主页,则此方法将不可用(因为HomeController 尚未初始化)...

所以,我的问题是我可以将这段代码移动到哪里,以确保它始终在应用程序引导程序中执行。

我尝试过,myApp.config()但没有成功...

任何想法?

4

1 回答 1

42

正如评论中提到的@ganaraj,服务可能是更好的选择。

但是,要回答您的问题,您可以使用run()方法。

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

在加载所有模块后调用 run()。

于 2013-03-07T15:18:38.470 回答