Javascript 如何在angularjs ready上的$rootScope上注册函数
我需要注册angularjs中随处可用的方法。此方法有2个参数(资源id、删除成功时的回调),它使用资源提供程序实际删除该项 然后为了注册它,我需要angularjs向我注入Javascript 如何在angularjs ready上的$rootScope上注册函数,javascript,jquery,angularjs,frontend,Javascript,Jquery,Angularjs,Frontend,我需要注册angularjs中随处可用的方法。此方法有2个参数(资源id、删除成功时的回调),它使用资源提供程序实际删除该项 然后为了注册它,我需要angularjs向我注入$rootScope和MyResourceProvider。我的第一个想法是在我的主页控制器中执行此操作: var HomeCtrl = function ($rootScope, MyResourceProvider) { $rootScope.confirmAndDeletePackage = funct
$rootScope
和MyResourceProvider
。我的第一个想法是在我的主页控制器中执行此操作:
var HomeCtrl = function ($rootScope, MyResourceProvider) {
$rootScope.confirmAndDeletePackage = function (sId, fCallback) {
// do some stuff
MyResourceProvider.delete({id: sId}, fCallback);
}
}
var HomeCtrl=函数($rootScope,MyResourceProvider){
$rootScope.confirmAndDeletePackage=函数(sId,fCallback){
//做点什么
删除({id:sId},fCallback);
}
}
我的问题就从这里开始。这在常规导航(主页->列表->选择->删除)中可以正常工作,但是如果用户直接访问一个页面,而该页面上没有通过主页的“删除”按钮,则此方法将不可用(因为HomeController尚未初始化)
所以,我的问题是,我可以将这段代码移动到哪里,以确保它始终在应用程序引导时执行
我尝试了myApp.config()
,但没有成功
有什么想法吗?正如@ganaraj在评论中提到的,服务可能是更好的选择 但是,要回答您的问题,您可以使用该方法
加载所有模块后,将调用run()。为什么不能在服务中执行此操作,并在具有“删除”按钮的任何位置插入该服务,并在该服务上调用所需的函数?因为您以前没有告诉我:)!thx,我在一个服务中移动了它,我可以在任何我需要的地方得到它,它工作得很好+这是对所问问题的正确答案。。。即使真正的答案是“不要那样做”;)哈哈。
myApp.run(function($rootScope, MyResourceProvider) {
$rootScope.confirmAndDeletePackage = function (sId, fCallback) {
// do some stuff
MyResourceProvider.delete({id: sId}, fCallback);
}
})