17

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

次に、それを登録するには、angularjsがとを注入する必要が$rootScopeあり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 に答える