2013-03-07 2 views
15

anglejsのどこでも利用できるメソッドを登録する必要があります。このメソッドには2つの引数(リソースID、削除成功時のコールバック)があり、リソースプロバイダを使用して実際にアイテムを削除します。

それを登録するには、anglejsが私に$rootScopeMyResourceProviderを注入する必要があります。私の最初のアイデアは、私のホームページコントローラでそれを行うことでした:

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

実際に私の問題が始まります。通常のナビゲーション(home-> list-> select-> delete)では正常に動作しますが、ユーザーがホームページを通過することなく削除ボタンが利用できるページに直接アクセスすると、このメソッドは使用できなくなります( ...

私の質問は、アプリケーションのブートストラップで常に実行されるように、このコードをどこで移動できるかです。

私はすべてのアイデアをmyApp.config()にしようとしたが、W/O成功...

+3

サービスでこれを行い、削除ボタンがある場所でそのサービスを挿入し、そのサービスで必要な機能を呼び出すことができないのはなぜですか? – ganaraj

+1

あなたは前に私に言わなかったから:)! thx、私はそれをサービスの中に移しました。そして、私が必要とするあらゆるところでそれを得ることができ、うまくいきます! – poussma

答えて

40

コメントには@ganarajが記載されているので、サービスはおそらくこれのためのより良い選択です。

ご質問にお答えするには、run()メソッドを使用してください。

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

run()は、すべてのモジュールがロードされた後に呼び出されます。

+9

+1これは、本当の*答えが「そうしない」場合でも、質問された質問に対する正解です。 ;)ハハ。 –