2013-03-07 38 views
15

我需要註冊一個angularjs中隨處可用的方法。此方法有2個參數(資源ID,刪除成功時的回調),它使用資源提供者實際刪除該項目。

然後註冊它,我需要angularjs注入我$rootScopeMyResourceProvider。我的第一個想法是在我的主頁控制器中這樣做:

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

這裏開始實際上是我的問題。這在正常的導航(主頁 - >列表 - >選擇 - >刪除)中工作正常,但如果用戶直接訪問刪除按鈕可用而不通過主頁的頁面,則此方法將不可用(因爲HomeController尚未初始化)...

所以,我的問題是我可以在哪裏移動這段代碼,以確保它始終在應用程序引導時執行。

我試着myApp.config()但W/O型成功...

任何想法?

+3

爲什麼你不能在服務中這樣做,並在你有刪除按鈕的地方注入該服務,並調用該服務所需的功能? – ganaraj 2013-03-07 11:25:26

+1

因爲你以前沒有告訴我:)! thx,我在一項服務中提出了這個問題,我可以在任何需要的地方得到它,它工作的很好! – poussma 2013-03-07 11:36:30

回答

40

正如@ganaraj在評論中提到的那樣,服務可能是更好的選擇。

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

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

run()在所有模塊加載完成後調用。

+9

+1這是所問問題的正確答案......即使*真實答案是「不這樣做」。 ;) 哈哈。 – 2013-03-07 20:20:29

相關問題